例如,我的弹簧配置中有3个bean:A,B,C。我想像往常一样创建bean B和C.而且(当创建所有其他bean时)我想要求spring创建bean A.
有什么建议吗?
感谢。
答案 0 :(得分:0)
您应该尝试@DependsOn
adnotation
例如
<bean id="beanOne" class="ExampleBean" depends-on="manager,accountDao">
<property name="manager" ref="manager" />
</bean>
<bean id="manager" class="ManagerBean" />
<bean id="accountDao" class="x.y.jdbc.JdbcAccountDao" />
答案 1 :(得分:0)
我知道这不是一个bean排序答案,但也许你可以用一个@PostConstruct
方法实现你的目标,该方法将在构造bean之后调用,注入依赖关系并设置所有属性。
最好的鼻子
答案 2 :(得分:0)
一旦完全刷新了上下文并且已经创建了所有已配置的bean,Spring框架就会触发ContextRefreshedEvent
。
您可以尝试创建一个侦听器来捕获该事件并初始化bean A.
@Component
public class ContextRefreshedEventListener implements
ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
// Init your bean here
}
}
答案 3 :(得分:0)
更简单的方法是对 bean 使用 @Lazy
注释。这使您的 bean 在上下文初始化期间不会急切地初始化。简而言之,您的 bean 将在您请求时创建,而不是在此之前。
@Bean
@Lazy
public A beanA() {
//some code here
}