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

Jam*_*mes 5 java spring spring-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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

M. *_*num 12

在配置类中添加一个字段,然后使用该方法注释@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;
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这在参考指南中都有解释.