前言

  • springboot 2.0.0.RELEASE
  • maven 3.5.0

@ComponentScan

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Repeatable(ComponentScans.class)
public @interface ComponentScan {@AliasFor("basePackages")String[] value() default {};@AliasFor("value")String[] basePackages() default {};Class<?>[] basePackageClasses() default {};Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;Class<? extends ScopeMetadataResolver> scopeResolver() default AnnotationScopeMetadataResolver.class;ScopedProxyMode scopedProxy() default ScopedProxyMode.DEFAULT;String resourcePattern() default ClassPathScanningCandidateComponentProvider.DEFAULT_RESOURCE_PATTERN;boolean useDefaultFilters() default true;Filter[] includeFilters() default {};Filter[] excludeFilters() default {};boolean lazyInit() default false;@Retention(RetentionPolicy.RUNTIME)@Target({})@interface Filter {FilterType type() default FilterType.ANNOTATION;@AliasFor("classes")Class<?>[] value() default {};@AliasFor("value")Class<?>[] classes() default {};String[] pattern() default {};}
}

basePackages

  • basePackages 和 basePackageClasses 等效。basePackageClasses 会被转化成 class 所在的 PackageName。
  • basePackages 和 basePackageClasses 均未指定时, @ComponentScan 所在类所在的 PackageName 为默认值。
@ComponentScan(basePackages = "a.b.c")
@ComponentScan(basePackageClasses = Application.class)

resourcePattern

符合resourcePattern的资源才会被扫描到。
默认值**/*.class

useDefaultFilters

默认值true

includeFilters 和 excludeFilters

includeFilters 和 excludeFilters 均为 Filter 类型。因此写法也是一样的。

@ComponentScan(excludeFilters = @Filter(type = FilterType.REGEX, pattern = {"a.b.c.d.*"}))
@ComponentScan(includeFilters = @Filter(type = FilterType.REGEX, pattern = {"a.b.c.e.*"}))

使用 includeFilters 加载 @ComponentScan 所在类所在的 Package ,需要搭配 useDefaultFilters 使用。

@ComponentScan(useDefaultFilters = false, includeFilters = @Filter(type = FilterType.REGEX, pattern = {"a.b.c.d.*"}))

resource加载规则

classpath*:basePackage + '/' + resourcePattern

如果 basePackage 为 a.b.c,resourcePattern为默认,则上述表达式则为:classpath*:a.b.c/**/*.class

优先级

basePackages/basePackageClasses > resourcePattern > excludeFilters > includeFilters

ComponentScanAnnotationParser

ComponentScanAnnotationParser,用于解析@ComponentScan的类。

参考

https://blog.csdn.net/luojinbai/article/details/85877956

【sprinb-boot】@ComponentScan 使用相关推荐

  1. 具有Spring Boot和Java配置的Spring Batch教程

    我一直在努力将Podcastpedia.org的一些批处理作业迁移到Spring Batch. 以前,这些工作是以我自己的方式开发的,我认为现在是时候使用一种更"标准化"的方法了. ...

  2. 前端程序员忙里偷闲入门一波SpringBoot

    Hello Spring 新建一个工程,并创建如下目录 //HelloSpringApplication package com.example.hellospring;import com.exam ...

  3. spring 略介绍

    第一章 Spring 入门 1.1为什么要学spring spring是java语言中必须要掌握的框架,它涵盖了java的各个领域,基本上是全能的. spring的核心是依赖注入(DI),spring ...

  4. spring boot 报错:Your ApplicationContext is unlikely to start due to a @ComponentScan of the default p

    ** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default ...

  5. Spring Boot笔记-@ComponentScan初步解析

    @ComponentScan默认是扫描当前包下的所有类(包括子包) 如下: @SpringBootConfiguration @EnableAutoConfiguration @ComponentSc ...

  6. Spring Boot集成Swagger导入YApi@无界编程

    接口APi开发现状 现在开发接口都要在类似YApi上写文档,这样方便不同的团队之间协作,同步更新接口,提高效率. 但是如果接口很多,你一个个手工在YApi去录入无疑效率很低. 如果是使用Spring ...

  7. Maven项目Spring Boot启动

    1. pom.xml中增加配置 <parent><groupId>org.springframework.boot</groupId><artifactId& ...

  8. Spring Boot 学习(1)

    文 by / 林本托 Tip 做一个终身学习的人. 代码地址: https://github.com/iqcz/Springbootdemo Spring Boot 初体验 Spring Boot 包 ...

  9. 学习Spring Boot

    Spring boot 是什么 ? 简单说, spring boot 是一个构建项目的工具, 一个脚手架. Spring boot 能干什么? spring boot 做非常少的配置就可以构建生产级别 ...

  10. Spring Boot 实现通用 Auth 认证的 4 种方式

    欢迎关注方志朋的博客,回复"666"获面试宝典 文章介绍了spring-boot中实现通用auth的四种方式,包括 传统AOP.拦截器.参数解析器和过滤器,并提供了对应的实例代码, ...

最新文章

  1. google nexus5 root 安装Xposed框架教程
  2. mysql 数据库dbhelp_C# VS连接数据库DBhelp
  3. 如何实现ABB机器人与老式焊机的连接控制
  4. greenplum gpfdist应用
  5. [c#基础]使用抽象工厂实现三层
  6. qq音乐2012绿色版
  7. python计算今年第几天_Python三种方法计算指定日期是今年的第几天
  8. OpenShift - 扩展收缩应用部署规模
  9. eclipse maven 报错Could not get the value for parameter encoding for plugin execution default
  10. matlab色差,科学网—实用图片处理技巧(1)---MATLAB学习笔记 - 冯竟超的博文
  11. kindle书籍的后缀名_kindle可以看什么格式
  12. vmware,qemu各种方式上网设置(转)
  13. 计算机存储器与寄存器的区别,存储器与寄存器的区别
  14. 安卓实战之登录界面设计
  15. [ECCV 2020] Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation
  16. [题解]LuoGu4315:月下“毛景树”
  17. 【HTML】关于height值设置和显示不同的原因以及font-size对象为中文和英文的区别
  18. C语言指针详解(新手入门推荐)
  19. 项目负责人的心得体会
  20. 前端工程化之自动合成精灵图

热门文章

  1. CentOS配置网易163 yum源
  2. [hihoCoder]无间道之并查集
  3. 使用ldirectord实现后端RS健康状态监测及LVS调度功能
  4. 登录多实例MySQL失败,修改密码临时解决,原因不明
  5. Directx11教程(18) D3D11管线(7)
  6. K-均值聚类算法对未标注数据分组(1)
  7. Windows的三种坐标系:屏幕坐标系,非客户区坐标系,客户区坐标系
  8. java中的字符,字符串,数字之间的转换(亲测)
  9. 使用adb命令查看Sqlite数据库
  10. LINUX服务器出网带宽 一直被占用原因查找