1. <context:component-scan base-package=""/>
- 这标签是需要context的命名空间的。
- base-package:指定 spring 扫描注解的类所在的包。当需要扫描多个包的时候,可以使用逗号分隔。
- 如果只希望扫描特定的类,不是扫描包里的所有类的时候,可以使用 resource-pattern 属性来指定只扫描的包。
- 两个子标签
- 子标签<context:exclude-filter type=“annotation” expression=""/> 配置在不扫描的类,可以有很多个这样的子标签。
- 子标签<context:include-filter type=“annotation” expression=""/>
配置要扫描的类,也可以有多个。
2. 举例
- 基本配置
<context:component-scan base-package="www.xq.spring"></context:component-scan>
- 加上 resource-pattern 来指定只扫描的包:
<context:component-scan base-package="www.xq.spring"
resource-pattern="dao/*.class"></context:component-scan>
- 使用排除子节点:context:exclude-filter
<context:component-scan base-package="www.xq.spring">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
- 使用 context:include-filter 和 use-default-filters=“false” 配合使用
<context:component-scan base-package="www.xq.spring" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
- 上面都是用的 type=annotation,下面在看一下 assignable
<context:component-scan base-package="www.xq.spring" use-default-filters="false">
<context:exclude-filter type="assignable" expression="www.xq.spring.dao.UserDao"/>
</context:component-scan>