繁体   English   中英

发现所有已声明的bean的配置类后,如何强制使用spring创建所有已声明的bean?

[英]How force spring to create all declared beans at once their configuration class was discovered?

我有带有几个配置类的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:

  1. 我不想将所有MyBean Bean直接(明确地)注入OtherBean中,因为有很多MyBean Bean。
  2. 现在,我有一个解决方案:在类ConfigB上声明注解@DependsOn({“ bean_1”,“ bean_2” ....“ bean_99”}),但我认为这很不方便(与第1点几乎相同)。
  3. 我认为一种解决方案可能是一旦发现此配置类(ConfigA)便立即强制创建所有声明的bean(bean_1,...)。

添加@Autowired List列表; 字段到您的配置? 这会将所有注册的bean注入到列表中,因此希望spring以某种方式检查这些bean在哪里创建。

您可以在此处添加@Lazy ,这是javadoc

如果@Component或@Bean定义上不存在此批注,则会进行急切的初始化。 如果存在并设置为true,则@Bean或@Component不会被初始化,直到被另一个bean引用或从封闭的BeanFactory中显式检索。 如果存在并且设置为false,则将在执行启动单例初始化的bean工厂时实例化bean。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM