我有Spring Boot应用程序。
我有bean impl。 BeanPostProcessor
为我的DataSource
bean创建代理。因此,在初始化Application时,将为每个bean调用BeanPostProcessor.postProcessAfterInitialization
:
public Object postProcessAfterInitialization(final Object bean, final String beanName) throws BeansException {
if (bean instanceof DataSource) {
.... create proxy here
在依赖于DataSource
的另一个bean定义(org.apache.shiro.session.mgt.eis.SessionDAO bean)之前,它一直像魅力一样工作。现在,DataSource bean将不会通过postProcessAfterInitialization
方法。
我的猜测是DataSource
在BeanPostProcessor
之前被初始化的问题。
我在@DependsOn("nameOfMyPostProcessorBean")
定义中添加了DataSource
注释,因此BeanPostProcessor
在DataSource
之前创建。因此,现在BeanPostProcessor
是在DataSource bean之前创建的。 (我通过在bean的定义中添加断点来验证这一点)。但是它仍然不起作用,BeanPostProcessor.postProcessAfterInitialization
bean没有调用DataSource
。
感谢您的帮助或建议。