spring相关—IOC容器—指定扫描包时要(不)包含的类
此处涉及两个标签:
1、使用context:include-filter指定扫描包时要包含的类
2、使用context:exclude-filter指定扫描包时不包含的类
用处:在整合spring和springMVC时会用到
< context:component-scan base-package ="com.neuedu.ioc.bean"/>
[1]base-package属性指定一个需要扫描的基类包,Spring容器将会扫描这个基类包及其子包中的所有类。
[2]当需要扫描多个包时可以使用逗号分隔,
[3]如果仅希望扫描特定的类而非基包下的所有类,可使用resource-pattern属性过滤特定的类,示例:
<context:component-scan base-package="com.neuedu.component" resource-pattern="autowire/*.class"/>
[4]包含与排除
●<context:include-filter>子节点表示要包含的目标类
注意:通常需要与use-default-filters属性配合使用才能够达到“仅包含某些组件”这样的效果。
即:通过将use-default-filters属性设置为false,禁用默认过滤器,然后扫描的就只是include-filter中的规则
指定的组件了。
●<context:exclude-filter>子节点表示要排除在外的目标类
●component-scan下可以拥有若干个include-filtejr和exclude-filter子节
示例:1、不包含@Controller注解类
<context:component-scan base-package="com.neuedu.spring.entity"> <!-- annotation表明 expression中填写的是注解的全类名--> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
2、不包含自己创建的UserController类
<context:component-scan base-package="com.neuedu.spring.entity"> <!-- aspectj表示expression中为自己创建的UserController类的全类名--> <context:exclude-filter type="aspectj" expression="com.neuedu.spring.entity.UserController"/> </context:component-scan>
3、仅包含@Controller注解类(use-default-filters属性设置为false,禁用默认过滤器)
<context:component-scan base-package="com.neuedu.spring.entity" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
4、仅包含自己创建的UserController类
<context:component-scan base-package="com.neuedu.spring.entity" use-default-filters="false"> <context:include-filter type="aspectj" expression="com.neuedu.spring.entity.UserController"/> </context:component-scan>