SpringAOP

/ 0评 / 0

AOP面向切面编程,将解决特定领域问题的代码从业务逻辑中分离出来,通过切面来封装、维护。 灵活、相同的代码根据应用的需要灵活的出现在不同的场合。

  1. Advice 通知
    定义在连接点做什么,为切面增强提供织入借口。

    • BeforeAdvice
    • AfterAdvice
    • ThrowsAdvice
    • ...
  2. Pointcut 切点
    决定Advice应该作用于那个连接点(定义需要增强的方法的集合)
  3. Advisor 通知器
    结合advice和pointcut(应该在哪个关注点使用哪个通知) 实现方式


  1. 代理对象的生成 JDK Proxy和CGLIB

    Java动态代理,动态生成的代理类默认已经继承了Proxy类。而java是单继承,所以无法代理一个类,只能根据接口来进行代理


代理对象的获取--以ProxyFactoryBean为例

  1. 配置(基于xml)
  2. proxyInterfaces----拦截方法调用接口(拦截那些方法)
  3. target 增强对象(拦截方法调用接口的实现)
  4. interceptorNames 通知器

  1. getObject()
    初始化通知器链,生成代理对象
    AopProxy生成代理对象如果目标对象 不是接口类的实现 用CGLIB来生代理对象
  2. 增强
    invoke回调 【调用拦截器链[适配(注册)配置通知器]】

AOP多种配置方式

发表评论

电子邮件地址不会被公开。 必填项已用*标注