У меня есть приложение весенней загрузки.
У меня есть бинBeanPostProcessor
для создания прокси для моего DataSource
бина.Поэтому, когда приложение инициализируется, для каждого компонента вызывается BeanPostProcessor.postProcessAfterInitialization
:
public Object postProcessAfterInitialization(final Object bean, final String beanName) throws BeansException {
if (bean instanceof DataSource) {
.... create proxy here
Он работал как брелок, пока не было добавлено другое определение компонента (org.apache.shiro.session.mgt.eis.SessionDAO bean), который зависит от DataSource
.Теперь компонент DataSource не будет проходить метод postProcessAfterInitialization
.
Я предполагаю, что проблема в том, что DataSource
инициализируется до BeanPostProcessor
.
Я добавил @DependsOn("nameOfMyPostProcessorBean")
аннотацию копределение DataSource
, поэтому BeanPostProcessor
создается до DataSource
.Так что теперь BeanPostProcessor
создается перед компонентом DataSource.(Я проверил это, добавив точки останова в определения бина).Но он все еще не работает, и BeanPostProcessor.postProcessAfterInitialization
не вызывается для DataSource
bean-компонента.
Спасибо за любую помощь или предложения.