同时@Bean和@Component采用这两个方式注册同一个bean 一般会采用@Bean方式 这个时候我们的beanDefinition的 class [null]; scope=;是空的 但是factoryBeanName=testIocImplB; factoryMethodName=testIocImplE 则是有值的
BeanPostProcessor的相关疑点
今天我一个同事实现了一个BeanPostProcessor 同时 让其两个方法都返回null,这个时候 只有实现BeanPostProcessor的类的@PostConstruct 有效,其他的都失效了
初始化有两种方式 一个是spring的init 一个是我们的@PostConstruct, @PostConstruct是依靠在applyBeanPostProcessorsBeforeInitialization时候执行InitDestroyAnnotationBeanPostProcessor
后者是在这之后invokeInitMethods
那么当我们实现BeanPostProcessor的时候postProcessBeforeInitialization 返回null,applyBeanPostProcessorsBeforeInitialization在遇到null之后直接返回不会执行后续的BeanPostProcessor
所以不会执行其他bean的@PostConstruct,如果我们强行把我们的子类BeanPostProcessor设置PriportyOder的为Integer也没有用,因为我们在注册BeanPostProcessor的时候 会在最后注册完成了 把spring内部的几个beanPostProcessor重新注册在最后
网友评论