
AOP条款
建议
5种通知类型:
之前: 在调用目标方法之前调用通知功能
之后: 在目标方法完成后调用该通知. 目前,它不在乎该方法的输出是什么.
返回后: 成功执行目标方法后调用通知
抛出后: 目标方法抛出异常后调用通知
周围: 通知中包含被通知的方法,并且在被通知方上
在方法调用之前和之后执行自定义行为
发布通知和返回通知之间的区别在于,无论该方法是否有异常,都会执行发布通知. 仅当方法正常结束时才执行返回通知.

加入点
切入点
方面
简介
编织
编译时间: 编译目标类时,会将方面编织到目标类中. 这种方法需要特殊的编译器. AspectJ的编织编译器正在以这种方式编织到方面.
类加载期: 将目标类加载到JVM中时spring aop 异常通知,将编织各个方面. 这种方法需要一个特殊的类加载器,它可以在将目标类引入应用程序之前对其进行增强. AspectJ 5的加载时编织支持这种编织方面的方法.
运行时: 在应用程序运行过程中的某些时候,各方面都被编织在一起. 通常,当编织到方面时,AOP容器将为目标对象动态创建代理对象. 通过这种方式将Spring AOP编织到这个方面.
第二,Spring对AOP的支持
前三个是Spring AOP实现的变体. Spring AOP建立在动态代理的基础上. 因此,Spring对AOP的支持仅限于方法拦截.

1.Spring通知对象在运行时
通过将方面包装在代理类中spring aop 异常通知,Spring在运行时将方面编织到Spring管理的Bean中. 如下图所示,代理类封装了目标类,拦截了被通知方法的调用,然后将该调用转发给实际的目标bean. 当代理拦截方法调用时,它将在调用目标bean方法之前执行方面逻辑.

在应用程序需要代理之前,Spring不会创建代理对象. 如果使用ApplicationContext,则当Applicationcontext从Beanfactory加载所有bean时,Spring将创建一个代理对象. 由于代理对象是由Spring运行时创建的,因此我们不需要特殊的编译器即可编入Spring AOP的各个方面.
2. Spring仅支持方法级连接点
由于Spring基于动态代理,因此Spring仅支持方法连接点. 这与某些其他AOP框架(例如AspectJ和JBoss)不同. 除了方法切入点之外,它们还提供字段和构造函数访问点.
按切点选择连接点
以下是Spring AOP支持的AspectJ切入点指示器
AspectJ指标说明
arg()

将连接点匹配参数的执行方法限制为指定的类型
@args()
限制由指定注释标记的连接点匹配参数的执行方法
执行()
匹配的执行方法是连接点
这个()
限制连接点以将AOP代理bean引用与指定类型的类匹配
目标
限制连接点以使目标对象与指定类型的类匹配
@target

限制连接点以匹配特定的执行对象,并且与这些对象相对应的类必须具有指定的注释类型
在()内
限制连接点以匹配指定的类型
@within()
限制连接点以匹配指定注释所标记的类型(使用Spring AOP时,方法是在指定注释所标记的类中定义的)
@注释
限制具有指定注释的匹配点
编写切点

2. 定义方面
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-148352-1.html