如何在java配置中获取外部定义的bean

我有一个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?

最佳答案
在配置类中添加一个字段并使用@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中解释过.

转载注明原文:如何在java配置中获取外部定义的bean - 代码日志