我有几个配置类的Web应用程序。
@Configuration
public class ConfigA {
@Bean(name = "bean_1")
public MyBean getBean1() { /* Some code is here */ }
@Bean(name = "bean_2")
public MyBean getBean2() { /* Some code is here */ }
/* ... */
@Bean(name = "bean_99")
public MyBean getBean99() { /* Some code is here */ }
}
@Configuration
public class ConfigB {
public OtherBean getOtherBean() { /* Some code is here */ }
}
在调用构造函数时,MyBean类的bean会在某些全局上下文中注册。而OtherBean bean使用此全局上下文来获取MyBean类的所有实例。但是spring会在几个MyBean bean之前创建OtherBean,我不知道如何改变这种行为。
PS:
答案 0 :(得分:1)
添加@Autowired列表清单;字段到您的配置?这会将所有已注册的bean注入一个列表,所以希望以某种方式检查那些bean创建的位置。
答案 1 :(得分:1)
您可以在此处添加@Lazy
,这是javadoc
如果@Component或@Bean定义中没有此注释,则会发生急切初始化。如果存在并设置为true,则@Bean或@Component将不会被初始化,直到被另一个bean引用或从封闭的BeanFactory中显式检索。如果存在并设置为false,那么bean将在启动时由bean工厂实例化,这些工厂执行单例的初始化。