一次使用BeanPostProcessor疏漏引起的重大bug

实现BeanPostProcessor需要overRide两个方法,一个是postProcessBeforeInitialization,一个是postProcessAfterInitialization。
他们两个是什么作用百度有说,before是在bean初始化前会执行的方法,after是bean初始化后会执行的方法,无论你写了什么业务代码,结构代码,最最最最重要的是要return bean,把传进来的bean再给回去,切忌不能return null。
原因如下:
拿定时任务举例,最简单的写定时任务的方法就是在方法上加一个定时任务的注解,这个定时任务之所以能定时跑,就是在初始化bean完成后,spring有一个扫描全类,把带定时任务注解的方法放进容器,再由spring底层的什么东西去扫他再定时跑。
当你在实现BeanPostProcessor的类里重新after方法却返回 null,就会打断扫描,直接把bean返回,这样写出来的定时任务类不是一个真的定时任务,只是一个能调用里面方法的bean,并且程序不会报错,基本上所有代码也都能正常跑,但你的定时任务就是死活不会调度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值