Java 如何强制spring在发现配置类后立即创建所有声明的bean?
我有几个配置类的web应用程序Java 如何强制spring在发现配置类后立即创建所有声明的bean?,java,spring,Java,Spring,我有几个配置类的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 */ } /* ... */
@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使用这个全局上下文来获取MyBean类的所有实例。但是spring比MyBean更早地创建了OtherBean,我不知道如何改变这种行为
附言:
添加@Autowired列表;字段到您的配置?这将把所有注册的bean注入到一个列表中,因此希望spring能够以某种方式检查这些bean是在哪里创建的。add@Autowired list;字段到您的配置?这将把所有注册的bean注入到一个列表中,希望spring能够以某种方式检查这些bean是在哪里创建的。您可以在这里添加
@Lazy
,这是javadoc
如果@Component或@Bean定义中不存在此注释,则将发生紧急初始化。如果存在并设置为true,@Bean或@Component将不会被初始化,直到被另一个Bean引用或从封闭的BeanFactory显式检索。如果存在并设置为false,则bean将在启动时由执行单例急切初始化的bean工厂实例化
您可以在这里添加
@Lazy
,这是javadoc
如果@Component或@Bean定义中不存在此注释,则将发生紧急初始化。如果存在并设置为true,@Bean或@Component将不会被初始化,直到被另一个Bean引用或从封闭的BeanFactory显式检索。如果存在并设置为false,则bean将在启动时由执行单例急切初始化的bean工厂实例化
在您的情况下可能会有所帮助可能会尝试添加@Autowired List;字段到您的配置?这将把所有注册的bean注入到一个列表中,所以希望spring能以某种方式检查这些bean是在哪里创建的。@freakman Thx,它解决了我的问题,如果你发布一个答案(不是评论),我会将其标记为正确答案。在您的情况下可能会有所帮助可能会尝试添加@Autowired List;字段到您的配置?这将把所有注册的bean注入到一个列表中,所以希望spring能以某种方式检查这些bean是在哪里创建的。@freakman Thx,它解决了我的问题,如果你发布一个答案(不是评论),我会将其标记为正确答案。