在软件中,有些行为对于大多数应用都是通用的。日志,安全和事务管理几乎是所有软件都需要的。他们是否可以主动的参与呢,如果让应用程序只关注与自己所针对的业务领域问题,而其他的问题有其他应用对象来处理。是否属于一种封装呢。最近学习了spring的一些基本原理,在软件开发中,分布于应用中多处的功能被称为横切关注点(cross-cutting concerns)。通常,这些横切关注点从概念上是与应用的业务逻辑相分离的。将这些横切关注点与业务逻辑相分离是面向切面编程所解决的。

关于AOP的一些定义:

通知(Advice)

切面的工作被称为通知,且有目标,有自己需要完成的工作。

spring有五种类型的通知:

1.before   在方法被调用之前
2.after    在方法被调用之后
3.after-returning    在方法成功执行之后
4.after-throwing    在方法抛出异常之后
5.around    通知包裹了被通知的方法,在被通知方法调用之前和调用之后执行自定义的行为

连接点(Joinpoint)

连接点是在应用执行过程中能够插入切面的一个点,切面代码可以利用这些点插入到应用的正常流程之中,并添加新

的行为。Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:

Aspecj可以支持

切点(Poincut)

切点有助于缩小切面所通知连接点的范围。它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用。

切面(Aspect)

是通知和切点的结合,通知和切点共同定义了关于切面的全部内容——她是什么,在何时和何处完成其功能。

Apring 对 AOP的4种支持:

1.基于代理的经典AOP

2.@AspectJ注解驱动的切面

3.纯POJO切面

4.注入式AspectJ切面

前3个都是spring基于代理的AOP变体,因此,spring对AOP的支持局限于方法拦截。如果AOP需求超过了简单方法拦截的范畴,那么就使用最后一个方法,利用Spring的依赖注入把Bean注入到AspectJ切面中。

总结:

下面的博客将会用自己敲的小例子来讲讲对于AOP的理解,对于另一种AOP的实现AspectJ,是如何与SpringAOP相结合的,等着进一步的了解。

最新文章

  1. ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面
  2. QT error: cannot find -lGL
  3. Dreamweaver的代码与设计简单结合的运用
  4. Android Studio修改项目的包名
  5. HDU2167 Pebbles(状压DP)
  6. Ch2.Making Reconmmendation in PCI
  7. python 之 模拟GET/POST提交
  8. Jquery radio checked
  9. 【JavaScript】history.back() 网页已过期
  10. jmeter+ant+jenkins+mac使用HTML Publisher插件后查看html报告显示不正常
  11. python基础—函数嵌套与闭包
  12. C#4并行计算
  13. [转]docker之Dockerfile实践
  14. Gym - 100989F
  15. mysql配置utf8_mb4
  16. iOS开发之--UIImageView的animationImages动画
  17. linux(ubuntu)共享文件夹
  18. 自学Python1.5-Centos内python2识别中文
  19. 洛谷P3953 逛公园
  20. Nlog.Config:日志方法步骤

热门文章

  1. Office 2010 激活 - Failed to inject memory!
  2. Spring Batch并行与扩展
  3. 2. CNN卷积网络-前向传播算法
  4. faster rcnn流程
  5. How to Use updateConstraints(什么时候该使用updateConstraints)
  6. InstallShield卸载不彻底,残留大量dll文件
  7. C++中cin的用法汇总
  8. mypy 支持静态类型编程的python变种
  9. [net]ftp ssh http telnet https服务及端口
  10. 远程log调试工具console.re