Spring AOP(通知,连接点,切点,长宽比)

电脑杂谈  发布时间:2020-03-22 13:12:39  来源:网络整理

spring aop获取异常_spring aop 异常通知_spring aop 异常通知

AOP条款

建议

5种通知类型:

之前: 在调用目标方法之前调用通知功能

之后: 在目标方法完成后调用该通知. 目前,它不在乎该方法的输出是什么.

返回后: 成功执行目标方法后调用通知

抛出后: 目标方法抛出异常后调用通知

周围: 通知中包含被通知的方法,并且在被通知方上

在方法调用之前和之后执行自定义行为

发布通知和返回通知之间的区别在于,无论该方法是否有异常,都会执行发布通知. 仅当方法正常结束时才执行返回通知.

spring aop 异常通知_spring aop获取异常_spring aop 异常通知

加入点

切入点

方面

简介

编织

编译时间: 编译目标类时,会将方面编织到目标类中. 这种方法需要特殊的编译器. AspectJ的编织编译器正在以这种方式编织到方面.

类加载期: 将目标类加载到JVM中时spring aop 异常通知,将编织各个方面. 这种方法需要一个特殊的类加载器,它可以在将目标类引入应用程序之前对其进行增强. AspectJ 5的加载时编织支持这种编织方面的方法.

运行时: 在应用程序运行过程中的某些时候,各方面都被编织在一起. 通常,当编织到方面时,AOP容器将为目标对象动态创建代理对象. 通过这种方式将Spring AOP编织到这个方面.

第二,Spring对AOP的支持

前三个是Spring 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()

spring aop获取异常_spring aop 异常通知_spring aop 异常通知

将连接点匹配参数的执行方法限制为指定的类型

@args()

限制由指定注释标记的连接点匹配参数的执行方法

执行()

匹配的执行方法是连接点

这个()

限制连接点以将AOP代理bean引用与指定类型的类匹配

目标

限制连接点以使目标对象与指定类型的类匹配

@target

spring aop 异常通知_spring aop获取异常_spring aop 异常通知

限制连接点以匹配特定的执行对象,并且与这些对象相对应的类必须具有指定的注释类型

在()内

限制连接点以匹配指定的类型

@within()

限制连接点以匹配指定注释所标记的类型(使用Spring AOP时,方法是在指定注释所标记的类中定义的)

@注释

限制具有指定注释的匹配点

编写切点

2. 定义方面


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

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...