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

时间:2013-09-09 11:02:31

标签: 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;
    }
}

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

1 个答案:

答案 0 :(得分: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;
    }
}

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中解释了这一点。