spring aspectj aop的配置内建逻辑和要点

1. spring proxy的内建过程:

  1. <aop:aspectj-autoproxy>标签实际上生成Bean:
    org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator
  2. spring Bean加载器装入bean声明
  3. 在bean声明中查询是否有代理生成类,放入advisor列表
  4. 加载实体类
  5. 在advisor列表中查询符合该实体类的advisor
  6. 生成代理类(如果有符合的advisor列表)
  7. 完成类加载

2. proxy代理类型:

  1. Jdk proxy模式,如果在spring的aop默认模式下,如果类有接口声明,则是这种模式
  2. CBLib动态生成类模式,如果类没有接口声明
  3. LTW(loading time weaver)加载时代码编织,这个在java中默认是不支持的,实际上是使用了java agent 方式,使用第三方对底层jvm加载进行了处理

3. <aop:aspectj-autoproxy>

aspect 自动代理模式,含义是自动将含有@Aspect注解的Bean(是Bean!)作为Advisor加入aop:config中。

要点:

  • 如果没有约束,就是所有的bean都会查看是否含有@Aspect
  • <aop:include>中name一定是Pattern表达式,不是spring execution表达式
  • 对于pointcut,声明在该类中@Pointcut上
  • 对于类型,声明在该类对应的处理函数上

4. <aop:config>

  1. 实际上和auto-proxy一样,只是auto-proxy的config内容是写在注解里面的,直接对应于aop:config的config内容,配置内容基本一样,标签对应注解

5. 注意:

  1. spring配置bean时lazy-init选项在abstract上的声明不能在继承该bean的bean上生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值