Spring面向切面编程 -- Spring对AOP的支持

Spring提供了4中类型的AOP支持:

        1.基于代理的经典Spring AOP

        2.纯POJO切面

        3.@AspectJ注解驱动的切面

        4.注入式AspectJ(适用于Spring各版本)

        前三种都是Spring AOP实现的变体,Spring AOP构建在动态代理基础之上,因此,Spring对AOP的支持局限于方法拦截


Spring通知是Java编写的:

        Spring所创建的通知都是用标准的Java类编写的.


Spring在运行时通知对象:

        通知在代理类中包裹切面,Spring在运行期把切面织入到Spring管理的Bean中.

        代理类封装了目标类,并拦截被通知方法的调用,再把调用转发给真正的目标bean.当代理拦截到方法调用时,在调用目标bean 方法之前,会执行切面逻辑.

        直到应用需要被代理的bean时,Spring才创建代理对象.因此,Spring时运行时才创建代理对象.


Spring只支持方法级别的连接点:

        因为Spring基于动态代理,所以Spring只支持方法连接点.方法拦截可以满足大部分的需求.如果需要方法拦截之外的连接点拦截功能,那么我们可以利用Aspect来补充Spring AOP的功能.

        

猜你喜欢

转载自blog.csdn.net/weixin_41704428/article/details/79972163