BeanPostProcessor+Proxy动态代理+自定注解实现方法级增强和代理(类似AOP)

相关概念:

BeanPostProcessor接口是Bean后置处理器。接口实现类有postProcessBeforeInitialization和afterProcessBeforeInitialization两个方法,分别在bean创建前和创建后出发调用(bean创建/初始化的顺序,需要进一步深化看一下)。因此bean创建之前或者之后对对应bean进行一些处理。这两个方法最终的返回值还是bean。可以是本身,也可以是加工过之后的(比如这里的代理之后的bean)

一般来说,spring工程中编写一个实现了BeanPostProcessor接口的实现类,这个类会在Spring容器启动过程中在实例化每个bean的时候都出发一次响应的postProcessBeforeInitialization和afterProcessBeforeInitialization方法(个人觉得这样会造成很大的启动效率降低)。   利用这一特性,有一个思路:利用beanpostProcessor,捕获部分bean的加载,并对这些bean生成动态代理,并将代理类放到spring容器中,后续调用原本这个bean类的方法时,就会直接进代理类的invoke方法,实现对某些类的某些方法(利用自定义注解)的增强等。这里有以下几个点:

1.MyPostProcessor implements BeanPostProcessor实现类需要将自身也放入spring容器托管,直接@Component或者用@Configure注解类都可以,涉及(@Component和@Configure配置方式的区别)

2.动态代理:动态代理类是用下面的形式创建,实现InvocationHandler接口,实现必须的

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值