我已经开始使用Spring 3开发一个新项目了,我正在使用注释。我喜欢我可以连接我的类以注入依赖项,但我知道让context:component-scan
从基础包启动是一种不好的做法。
我正在使用DispatcherServlet
,它有自己的xml配置文件。那也是context:component-scan
。当我第一次开始学习Spring时,我的组件扫描中有重叠,并且多次创建了bean。我想避免这种情况。
组织我的软件包或组件扫描以覆盖所有bean而不重复的好方法是什么?
目前我有这样的套餐:
my.package.controller
my.package.dao
my.package.entity
my.package.service
my.package.util
如果我在所有这些包中都有bean,那么似乎最简单的方法就是将<context:component-scan base-package="my.package"></context:component-scan>
放入applicationContext.xml并完成它。
在applicationContext.xml中扫描调度程序的xml中的my.package.controller
和其余的(不包括my.package.controller)会不会更好?
或者我应该在一个区域安排所有注释的课程,在另一个区域安排其他所有课程?类似的东西:
my.package.spring.controller
my.package.spring.dao
my.package.spring.entity
my.package.spring.service
my.package.spring.util
my.package.notannotated
my.package.notannotated2
我正在使用@Autowired向大多数(如果不是全部)课程添加日志记录,所以我不知道我会有任何不会注释的课程。
我讨厌陷入配置......我宁愿陷入代码中,所以如果有人可以提供任何提示,我会很乐意欢迎他们。
谢谢!
答案 0 :(得分:12)
是 - 在您的主要环境中扫描除控制器之外的所有内容
<context:component-scan base-package="my.package">
<context:exclude-filter type="regex" expression="my\.package\.controller.*"/>
</context:component-scan>
并在DispatcherServlet上下文中只扫描控制器包。