如何在基于Java的配置中使用@Autowired?
问题描述:
我在我的项目中使用基于Java的Spring配置,在@Configuration中的@ Bean注释方法中指定bean构造。最近,我开始认为使用@Autowired从@Configuration中删除所有不重要的bean会比使用@Autowired更好,只留下一小部分“根”集(关键服务和技术类的Spring MVC)。如何在基于Java的配置中使用@Autowired?
不幸的是,似乎Spring可以注意到@Autowired依赖关系的实现,只有当它们位于组件扫描包内部时,我不能诉诸于某些XML才能实现。
有没有任何方式使用@Autowired与基于Java的配置,而不明确指定每个bean?
答
如果你正在通过dao实现Idao,并且你正在寻找依赖于你的引用var的@Autowire ......你首先需要: 定义bean,以便你(在基于Java的配置中)简单地返回impl类到界面。 bean名称是您的方法名称。
当你自动装配它时,它会搜索你想要自动装配的参考变量和你的声明之间的匹配名称。
然后你会好起来的。希望这可以帮助。
'@ Autowired'在普通'@ Bean'风格的配置中工作得很好,不需要组件扫描(甚至不需要)。请举一个你有什么样的例子。 – skaffman 2010-06-03 12:31:06
例如,我有一个@Bean MyService服务,它有一个'@Autowired IDao dao'。有一个'接口IDao'和'类DaoImpl实现IDao',并没有'IDao'的其他实现。据我所知,有必要声明'@Bean IDao dao(){return new DaoImpl}'或使用组件扫描。否则,我会得到'没有找到类型为IDao的依赖性异常的匹配bean。 – Fixpoint 2010-06-03 14:00:11
您可以使用'@ ComponentScan'进行组件扫描。不需要XML。 – Nick 2011-10-05 13:38:40