Как найти последовательность бобов, инициализированных весной

В моем ApplicationContext есть bean-компоненты, которые подключены автоматически, а также beans, которые настроены в файле application-Context.xml. Я хочу узнать последовательность инициализации bean-компонентов к весне.

Я хотел знать это, потому что: (Я знаю, что это известная и популярная проблема в stackoveflow .. но я не мог найти решения !!) Я создал SessionBean в application-Context.xml. Теперь попытаемся автоматически подключить этот bean-компонент к файлу DaoImpl. sessionBean показывает здесь null. Возможно, до этого момента его sessionFactory не инициализируется.

* Я попытался использовать @DependsOn ("SessionFactory") безуспешно.

Итак, мои вопросы:

1)How to find the sequence of beans initialised by spring.
2)How do say to spring to initilise sessionfactory before  initialising my DAOImpl class.

Пожалуйста, помогите, так как я поражен !!

Заранее спасибо.


person Nilotpal    schedule 17.12.2016    source источник
comment
Последовательность инициализации bean-компонента не является причиной вашей проблемы. Spring определит, нужен ли компонент для автоматического подключения, и перед этим инициализирует компонент. Если у вас есть поле с автоматическим подключением, которое имеет значение NULL, вы, вероятно, создаете объект класса самостоятельно, а не с помощью Spring. Разместите часть вашего кода, который участвует.   -  person dunni    schedule 17.12.2016


Ответы (2)


вот ответ на ваш 1-й вопрос -

<bean id="OutputHelper" class="com.mkyong.output.OutputHelper">
        <property name="outputGenerator" >
            <ref bean="CsvOutputGenerator"/>
        </property>
</bean>

<bean id="CsvOutputGenerator" class="com.mkyong.output.CsvOutputGenerator">
        <property name="name"value="hi"/ >
</bean>

say this is the bean defined in your spring config file 
so what spring container will try to do is -   
1. 1st it will try to load i.e `OutputHelper` class  
2. While loading the class it will check if there is any dependency                           
3. if yes,It will stop life cycle of main bean i.e `OutputHelper` and try to load dependent bean 'CsvOutputGenerator'.
- If current bean does not have any dependency then it will load the bean and moved back to main bean life cycle process.

step 2 &3 will be applicable for all the bean mentioned in config file.
person Nivi    schedule 17.12.2016

Spring auto определяет последовательность инициализации Bean, глядя, все ли зависимости указанного bean-компонента инициализированы или нет.

В вашем случае кажется, что вы не используете инициализированный bean-компонент класса DaoImpl, создавая новый объект класса самостоятельно.

Попробуйте создать bean-компонент класса DaoImpl и использовать его.

person Kaushik Patel    schedule 17.12.2016