• ComponentScan注解的使用


    在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中。

    但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中。

    有两种实现方案,

    1.如果要过滤的类比较少,直接在启动类@SpringbootApplication(scanPackage="xxx.xxx.xxx")该注解上添加exclude属性,过滤某个class类

    也可以这样写

    注解说明

    @SpringBootApplication: 

    scanBasePackages:扫描包路径

    excludeName:过滤的类全路径

    exclude:过滤的类class对象

    2.如果要过滤的类较多,需要自定义Filter,并使用该Filter。

    注解说明

    @ComponentScan:会自动扫描包路径下面的所有@Controller、@Service、@Repository、@Component 的类

    它里面的属性: value指定扫描的包,includeFilters包含那些过滤,excludeFilters不包含那些过滤,useDefaultFilters默认的过滤规则是开启的,如果我们要自定义的话是要关闭的。其中@Filters是一个过滤器的接口。

    @Filters 指过滤规则,FilterType指定过滤的规则(

                FilterType.ANNOTATION:按照注解

                FilterType.ASSIGNABLE_TYPE:按照给定的类型;

                FilterType.ASPECTJ:使用ASPECTJ表达式

                FilterType.REGEX:使用正则指定

                FilterType.CUSTOM:使用自定义规则)

                classes指定过滤的类

    如果我们在使用自定义(includeFilters = @Filter(type = FilterType.CUSTOM, classes = {自己定义的类}))过滤规则的时候,我们自己定义的类要实现TypeFilter接口,例如:

    该类即表示,

    当className中包含某个包名时,即当前加载类是某个包下面的类,就返回true,表示该类过滤,不放到spring容器中。

    用例

    @ComponentScan扫描包

    自定义TypeFilter指定@ComponentScan注解的过滤规则

    过滤规则FilterType详解

    正则表达式排除包扫描

  • 相关阅读:
    OS快速开发必备
    YYmodel 郭耀源 底层分析
    UITableView使用总结和性能优化
    文件操作
    DOM解析
    SAX解析
    Gallery
    菜单(menu)
    计时器(Chronometer)、标签(TabHost)
    ListActivity
  • 原文地址:https://www.cnblogs.com/edda/p/14592939.html
Copyright © 2020-2023  润新知