1.BeanPostProcessor 是一个接口 ,需要在 spring环境下才能使用 ,spring boot项目也是可以的 。 插一嘴,实现它的类需要 被spring容器扫描才能生效,比如加个@component 。
2.实现它以后,在jdk8时,可以选择实现两个接口,这两个接口一个是在类的生命周期中的初始化前,一个是在初始化后执行
postProcessBeforeInitialization(Object bean, String beanName) postProcessAfterInitialization(Object bean, String beanName)
3.这两接口与aop很像,甚至在postProcessAfterInitialization后置处理器里面可以改变返回的bean,对bean做属性赋值或者欢类型都可以。
bean就是产生的bean对象,beanName就是这个bean的名字
- 在初始化前,还有个步骤叫实例化,它是通过反射构造方法来得到一个实例化的对象。而 BeanPostProcessor 同样是可以对它进行 *** 作的 。
我们需要实现 InstantiationAwareBeanPostProcessor 接口,这个接口是继承了 BeanPostProcessor 的 。实现 InstantiationAwareBeanPostProcessor 接口后可实现两个方法: Object postProcessBeforeInstantiation(Class> beanClass, String beanName)和
boolean postProcessAfterInstantiation(Object bean, String beanName) 。
实例化前的方法大致与初始化前类似,而实例化后有所不同。
postProcessAfterInstantiation 的返回值代表后续 还走不走spring 的后续逻辑(属性填充,初始化) false代表不走 ,true 代表继续走
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)