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>
原文地址:https://www.cnblogs.com/kangxingyue-210/p/7445423.html