【发布时间】:2010-06-03 12:25:08
【问题描述】:
我在我的项目中使用基于 Java 的 Spring 配置,在 @Configuration 中的 @Bean-annotated 方法中指定 bean 构造。最近,最近,我开始认为使用@Autowired 从@Configuration 中删除所有不重要的bean 可能会更好,只留下它们的一小部分“根”集(关键服务和技术bean 之类的Spring MVC)。
不幸的是,Spring 似乎只有在 @Autowired 依赖项位于组件扫描包中时才能注意到它们的实现,而如果不求助于一些 XML,我就无法做到这一点。
有没有什么方法可以在不明确指定每个 bean 的情况下将 @Autowired 与基于 Java 的配置一起使用?
【问题讨论】:
-
@Autowired在普通的@Bean风格的配置中工作得很好,不需要组件扫描(甚至不需要)。请举例说明你有什么。 -
例如,我有一个
@Bean MyService service,它有一个@Autowired IDao dao。有interface IDao和class DaoImpl implements IDao并且没有IDao的其他实现。据我了解,有必要声明@Bean IDao dao() { return new DaoImpl }或使用组件扫描。否则,我会收到No matching bean of type IDao found for dependency异常。 -
您可以使用
@ComponentScan进行组件扫描。不需要 XML。