在<context:component-scan>?</context:component-scan>中包含子包的语法是什么

时间:2011-07-24 14:00:26

标签: java spring

我使用的是Spring,我有很长的子包列表,我是否必须在<context:component-scan>标记中逐一指定它们?

<context:component-scan base-package="com.fooapp.mainpackage, 
com.fooapp.mainpackage.subpackage1, 
com.fooapp.mainpackage.subpackage2, 
com.fooapp.mainpackage.subpackage3" />

2 个答案:

答案 0 :(得分:23)

组件扫描支持包层次结构,因此这应该有效:

<context:component-scan base-package="com.fooapp.mainpackage"/>

这样可以轻松快捷地验证自己 - 你试过吗?

答案 1 :(得分:5)

此外,我还要添加默认情况下使用@Component@Repository@Service@Controller注释的类,或者使用@注释的自定义注释组件是唯一检测到的候选组件。

您可以通过应用include-filterexclude-filter

的自定义过滤器来更改此行为

例如:

<context:component-scan base-package="com.vanilla">
      <context:exclude-filter 
                type="annotation"
                expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

它将排除所有@Repository注释。