Означает ли аннотирование bean-компонента @DependsOn, что зависимый bean-компонент будет создан или инициализирован?

Я использую Spring 3.0.2. У меня есть два относительно простых определения bean-компонентов. У одного есть @PostConstruct (bean 'A'), который запускает цепочку событий, к которым должен быть подготовлен bean @DependsOn (bean 'B'). Однако кажется, что даже несмотря на то, что я заявил, что компонент «A» зависит от компонента «B», события (методы жизненного цикла) компонента «A» выполняются до того, как компонент «B» будет полностью инициализирован.

Означает ли утверждение, что bean-компонент является "зависимым" через @DependsOn (или, если на то пошло, зависит от bean-определения), что методы жизненного цикла зависимого bean-компонента будут завершены до того, как bean-компонент зависит от указанного bean-компонента?

Будут ли методы жизненного цикла компонента «B» завершены до компонента «A»?

UPDATE

Bean A - это настраиваемый класс, который использует шаблон JMS для отправки сообщения, объявляющего, что он инициализирован.

Получатель упомянутого сообщения обрабатывает его и пересылает его конфигурацию в MessageListeningContainer (компонент B).

Первая часть происходит до того, как Bean B будет запущен DefaultLifecycleProcessor.

@Component
@DependsOn("beanB")
public class BeanA {
    @PostConstruct
    public void init() {
        // do stuff
    }
}

<bean id="beanB" class="org.springframework.jms.listener.DefaultMessageListenerContainr">
    <!-- other configuration -->
</bean>

Я добавил в свой метод инициализации инъекцию bean-компонента b плюс два оператора регистрации:

container.isRunning();
container.isActive();

Я посмотрел на источник Spring, и isActive устанавливается в значение true после того, как метод инициализации (doInitialized завершен). IsRunning устанавливается после завершения doStart. DoStart запускается DefaultLifecycleProcessor, который происходит после вызова аннотированных методов @PostConstruct.

Как я могу гарантировать, что мой метод Postconstruct вызывается ПОСЛЕ того, как bean-компонент b был инициализирован И запущен?

8
задан 11 January 2012 в 19:28
поделиться