我的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.
请帮忙,因为我很震惊!!
提前致谢。
答案 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。