在Spring的Java配置中自动assemblybean

是否可以在用Java编写的Spring配置中使用Spring的@Autowired批注?

例如:

 @Configuration public class SpringConfiguration{ @Autowired DataSource datasource; @Bean public DataSource dataSource(){ return new dataSource(); } // ... } 

显然,DataSource接口不能直接实例化,但我在这里直接实例化它是为了简化。 目前,当我尝试上述操作时,数据源对象保持为null并且不由Spring自动assembly。

我通过返回FactoryBean@Autowired成功地使用Hibernate SessionFactory对象。

所以我的问题具体说明:对于DataSource ,有没有办法做到这一点? 或者更一般地说,在Spring Java配置中自动assemblybean的方法是什么?

我应该注意到我使用的是Spring 3.2版。

如果需要在同一个@Configuration文件中引用DataSource bean,只需调用bean方法即可。

 @Bean public OtherBean someOtherBean() { return new OtherBean(dataSource()); } 

或者将它自动装入@Bean方法

 @Bean public OtherBean someOtherBean(DataSource dataSource) { return new OtherBean(dataSource); } 

@Configuration类的生命周期有时会像您建议的那样阻止自动assembly。

也许你可以使用构造函数从其他配置文件中将一些bean注入到你的配置中,而@Autowired在配置文件中可能无法正常工作

 @Configuration public class AppConfig { private DataSource dataSource; public AppConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean public OtherBean otherBean(){ return new OtherBean(dataSource); } } 

使用@Configuration类配置的bean无法自动assembly,

所以你不能一起使用@Autowiring和@configuration