【问题标题】:How to get externally defined bean in java config如何在java config中获取外部定义的bean
【发布时间】:2013-09-09 11:02:31
【问题描述】:

我有一个 java 配置类,它使用 @ImportResources 注释导入 xml 文件。在 java 配置中,我想引用在 xml 配置中定义的 bean,例如喜欢:

@Configuration
@ImportResource({
        "classpath:WEB-INF/somebeans.xml"
    }
)
public class MyConfig {
    @Bean
    public Bar bar() {
        Bar bar = new Bar();
        bar.setFoo(foo); // foo is defined in somebeans.xml
        return bar;
    }
}

我想将在 somebeans.xml 中定义的 bean foo 设置为将在 java config 类中创建的 bar bean。如何获得 foo bean?

【问题讨论】:

    标签: java spring spring-bean


    【解决方案1】:

    在配置类中添加一个字段并使用@Autowired 对其进行注释,或者将@Autowired 添加到方法中并传入该类型的参数。

    public class MyConfig {
    
        @Autowired
        private Foo foo;
    
        @Bean
        public Bar bar() {
          Bar bar = new Bar();
          bar.setFoo(foo); // foo is defined in somebeans.xml
          return bar;
        }
    }
    

    public class MyConfig {
        @Bean
        @Autowired
        public Bar bar(Foo foo) {
            Bar bar = new Bar();
            bar.setFoo(foo); // foo is defined in somebeans.xml
            return bar;
        }
    }
    

    这在the reference guide中都有解释。

    【讨论】:

    • 谢谢。好答案。文档的基本语句:“记住 \@Configuration 类最终只是容器中的另一个 bean - 这意味着它们可以像任何其他 bean 一样利用 \@Autowired 注入元数据!”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多