Spring AOP
作者:互联网
概念
使用场景
日志记录,性能统计,安全控制,权限管理,事务处理,异常处理,资源池管理
通知(Advice)包含了需要用于多个应用对象的横切行为,抽取出来的通用方法。
连接点(Join Point)是程序执行过程中能够应用通知的所有点,方法前、方法后、环绕方法、抛出异常...。
切点(Poincut)是定义了在“什么地方”进行切入,哪些连接点会得到通知。显然,切点一定是连接点。
切面(Aspect)是通知和切点的结合。通知和切点共同定义了切面的全部内容——是什么,何时,何地完成功能。
引入(Introduction)允许我们向现有的类中添加新方法或者属性。
织入(Weaving)是把切面应用到目标对象并创建新的代理对象的过程,分为编译期织入、类加载期织入和运行期织入。
连接点可以有很多,但是切点只有一个
通知类型
前置通知@Before
:在目标方法调用之前调用通知
后置通知@After
:在目标方法完成之后调用通知
环绕通知@Around
:在被通知的方法调用之前和调用之后执行自定义的方法
返回通知@AfterReturning
:在目标方法成功执行之后调用通知
异常通知@AfterThrowing
:在目标方法抛出异常之后调用通知
Spring AOP与Aspect
Spring AOP和AspectJ没半毛钱的关系,前者是JDK动态代理,用到了CGLIB(Code Generation Library),CGLIB是一个代码生成类库,可以在运行时候动态是生成某个类的子类。代理模式为要访问的目标对象提供了一种途径,当访问对象时,它引入了一个间接的层。后者是静态代理,在编译阶段就已经编译到字节码文件中。
标签:调用,连接点,Spring,AOP,切点,通知,方法 来源: https://www.cnblogs.com/imhui/p/15434067.html