在Spring 3中组织类进行组件扫描的智能方法是什么?

Pau*_*aul 7 java spring annotations

我已经开始使用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
Run Code Online (Sandbox Code Playgroud)

如果我在所有这些包中都有bean,那么似乎最简单的方法是放入<context:component-scan base-package="my.package"></context:component-scan>applicationContext.xml并完成它.

扫描my.package.controller调度程序的xml和applicationContext.xml中的其余部分(不包括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
Run Code Online (Sandbox Code Playgroud)

我正在使用@Autowired向大多数(如果不是全部)课程添加日志记录,所以我不知道我会有任何不会被注释的课程.

我讨厌陷入配置......我宁愿陷入代码,所以如果有人可以提供任何提示,我会很乐意欢迎他们.

谢谢!

sou*_*ica 12

是 - 在主环境中扫描除控制器之外的所有内容

 <context:component-scan base-package="my.package">
    <context:exclude-filter type="regex" expression="my\.package\.controller.*"/>
 </context:component-scan>
Run Code Online (Sandbox Code Playgroud)

并在DispatcherServlet上下文中只扫描控制器包.