Srping AOP 基本概念和通知

Posted 小康也想变大佬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Srping AOP 基本概念和通知相关的知识,希望对你有一定的参考价值。

  • 连接点 (Joinpoint)
    程序执行过程中明确的点,如方法的调用,或者异常的抛出.

  • 目标(Target)
    被通知(被代理)的对象,如上例中的SubjectImpl

  • 通知(Advice)
    在某个特定的连接点上执行的动作,同时Advice也是程序代码的具体实现,例如一个实现日志记录的代码(通知有些书上也称为处理),可以理解为AOP真正要实现的功能

  • 代理(Proxy)
    将通知应用到目标对象后创建的对象(代理=目标+通知),请注意:只有代理对象才有AOP功能,而AOP的代码是写在通知的方法里面的,如上例中的JDKProxy

  • 切入点(Pointcut)
    多个连接点的集合,定义了通知应该应用到那些连接点。也将Pointcut理解成一个条件 ,此条件决定了容器在什么情况下将通知和目标组合成代理返回给外部程序

  • 适配器(Advisor)
    适配器=通知(Advice)+切入点(Pointcut)

AOP运行原理:目标对象只负责业务逻辑,通知只负责AOP增强逻辑(如日志,数据验证等),而代理对象则将业务逻辑而AOP增强代码组织起来(组织者)

在spring中org.springframework.aop.framework.ProxyFactoryBean用来创建代理对象,在一般情况下它需要注入一下三个属性:

  • proxyInterfaces 代理应该实现的接口列表(List)
  • interceptorNames 需要应用到目标对象上的通知Bean的名字
  • target 目标对象 (Object)

前置通知接口

org.springframework.aop.MethodBeforeAdvice

后置通知接口

在连接点正常完成后执行的通知。

org.springframework.aop.AfterReturningAdvice

环绕通知接口

包围一个连接点的通知,最大特点是可以修改返回值,由于它在方法前后都加入了自己的逻辑代码,因此功能很强大。

org.aopalliance.intercept.MethodInterceptor

异常通知接口

这个接口里面没有定义方法,要求我们的类必须实现afterThrows这个方法
以异常类型作为参数,无返回值

org.springframework.aop.ThrowsAdvice

适配器接口

适配器, 通过正则表达式来定义方法切入点,也就是说定义哪些方法将被拦截器处理。适配器=通知(Advice)+切入点(Pointcut)。

org.springframework.aop.support.RegexpMethodPointcutAdvisor

以上是关于Srping AOP 基本概念和通知的主要内容,如果未能解决你的问题,请参考以下文章

Srping全注解开发---AOP模块

关于srping的AOP事务管理问题,自定义切面是否导致事务控制失效

AOP面向切面编程思想。

Spring 学习1

Spring AOP前置通知实例说明AOP相关概念

Spring中的AOP