您的位置:首页 > 编程语言 > Java开发

【spring系列】(1)——对于面向切面编程(AOP)的理解

2016-06-12 21:31 609 查看
      

        在软件中,有些行为对于大多数应用都是通用的。日志,安全和事务管理几乎是所有软件都需要的。他们是否可以主动的参与呢,如果让应用程序只关注与自己所针对的业务领域问题,而其他的问题有其他应用对象来处理。是否属于一种封装呢。最近学习了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相结合的,等着进一步的了解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: