【sprinb-boot】@ComponentScan 使用
前言
- 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 使用相关推荐
- 具有Spring Boot和Java配置的Spring Batch教程
我一直在努力将Podcastpedia.org的一些批处理作业迁移到Spring Batch. 以前,这些工作是以我自己的方式开发的,我认为现在是时候使用一种更"标准化"的方法了. ...
- 前端程序员忙里偷闲入门一波SpringBoot
Hello Spring 新建一个工程,并创建如下目录 //HelloSpringApplication package com.example.hellospring;import com.exam ...
- spring 略介绍
第一章 Spring 入门 1.1为什么要学spring spring是java语言中必须要掌握的框架,它涵盖了java的各个领域,基本上是全能的. spring的核心是依赖注入(DI),spring ...
- 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 ...
- Spring Boot笔记-@ComponentScan初步解析
@ComponentScan默认是扫描当前包下的所有类(包括子包) 如下: @SpringBootConfiguration @EnableAutoConfiguration @ComponentSc ...
- Spring Boot集成Swagger导入YApi@无界编程
接口APi开发现状 现在开发接口都要在类似YApi上写文档,这样方便不同的团队之间协作,同步更新接口,提高效率. 但是如果接口很多,你一个个手工在YApi去录入无疑效率很低. 如果是使用Spring ...
- Maven项目Spring Boot启动
1. pom.xml中增加配置 <parent><groupId>org.springframework.boot</groupId><artifactId& ...
- Spring Boot 学习(1)
文 by / 林本托 Tip 做一个终身学习的人. 代码地址: https://github.com/iqcz/Springbootdemo Spring Boot 初体验 Spring Boot 包 ...
- 学习Spring Boot
Spring boot 是什么 ? 简单说, spring boot 是一个构建项目的工具, 一个脚手架. Spring boot 能干什么? spring boot 做非常少的配置就可以构建生产级别 ...
- Spring Boot 实现通用 Auth 认证的 4 种方式
欢迎关注方志朋的博客,回复"666"获面试宝典 文章介绍了spring-boot中实现通用auth的四种方式,包括 传统AOP.拦截器.参数解析器和过滤器,并提供了对应的实例代码, ...
最新文章
- google nexus5 root 安装Xposed框架教程
- mysql 数据库dbhelp_C# VS连接数据库DBhelp
- 如何实现ABB机器人与老式焊机的连接控制
- greenplum gpfdist应用
- [c#基础]使用抽象工厂实现三层
- qq音乐2012绿色版
- python计算今年第几天_Python三种方法计算指定日期是今年的第几天
- OpenShift - 扩展收缩应用部署规模
- eclipse maven 报错Could not get the value for parameter encoding for plugin execution default
- matlab色差,科学网—实用图片处理技巧(1)---MATLAB学习笔记 - 冯竟超的博文
- kindle书籍的后缀名_kindle可以看什么格式
- vmware,qemu各种方式上网设置(转)
- 计算机存储器与寄存器的区别,存储器与寄存器的区别
- 安卓实战之登录界面设计
- [ECCV 2020] Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation
- [题解]LuoGu4315:月下“毛景树”
- 【HTML】关于height值设置和显示不同的原因以及font-size对象为中文和英文的区别
- C语言指针详解(新手入门推荐)
- 项目负责人的心得体会
- 前端工程化之自动合成精灵图