Я использую Spring 3.0.2.У меня есть два относительно простых определения бина.У каждого есть @PostConstruct (bean 'A'), который запускает цепочку событий, к которым должен быть подготовлен bean-компонент @DependsOn (bean 'B').Тем не менее, кажется, что даже несмотря на то, что я заявил, что компонент «A» зависит от компонента «B», события (методы жизненного цикла) компонента «A» выполняются до полной инициализации компонента «B».
Означает ли, что bean-компонент "зависим" через @DependsOn (или, в этом отношении, зависит от-в определении bean-компонента), означает, что методы жизненного цикла зависимого bean-компонента будут завершены до того, как bean-компонент зависит от указанного bean-компонента?
Будут ли завершены методы жизненного цикла компонента 'B' перед компонентом 'A'?
ОБНОВЛЕНИЕ
Элемент A - это пользовательский класс, использующий шаблон JMSотправить сообщение, сообщающее, что он инициализирован.
Получатель указанного сообщения обрабатывает его и пересылает его конфигурацию в MessageListeningContainer (компонент B).
Первая часть происходит до того, как компонент DefaultLifecycleProcessor запускает компонент B.
@Component
@DependsOn("beanB")
public class BeanA {
@PostConstruct
public void init() {
// do stuff
}
}
<bean id="beanB" class="org.springframework.jms.listener.DefaultMessageListenerContainr">
<!-- other configuration -->
</bean>
Я добавил в свой метод init внедрение компонента bean b плюс два оператора регистрации:
container.isRunning();
container.isActive();
Я посмотрел на источник пружины, и isActive установлен в true после метода инициализации (doInitialized завершено).IsRunning устанавливается после завершения doStart.DoStart запускается DefaultLifecycleProcessor, который происходит после вызова аннотированных методов @PostConstruct.
Как я могу гарантировать, что мой метод Postconstruct называется AFTER, bean-компонент b был инициализирован и запущен?