如何找到spring初始化的bean序列

时间:2016-12-17 08:03:09

标签: java spring hibernate autowired applicationcontext

我的ApplicationContext具有自动装配的bean以及在application-Context.xml文件中配置的bean。我想通过spring知道bean初始化的顺序。

我想知道这个,因为: (我知道这是stackoveflow中已知和流行的问题..但无法获得解决方案!!) 我在application-Context.xml中创建了SessionBean。现在尝试在DaoImpl文件中自动装配这个bean。 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.

请帮忙,因为我很震惊!!

提前致谢。

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:1)

Spring auto通过查看是否初始化了所有bean的所有依赖关系来确定Bean初始化的顺序。

您的情况似乎没有使用DaoImpl类的spring初始化bean,而是在您自己创建类的新Object。

尝试创建DaoImpl类的bean并使用bean。