问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Spring注解——使用@ComponentScan自动扫描组件

发布网友 发布时间:2023-02-04 06:37

我来回答

1个回答

热心网友 时间:2023-07-12 12:27

1.创建一个配置类,在配置类上添加 @ComponentScan 注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>。

2.使用 ApplicationContext 的 getBeanDefinitionNames() 方法获取已经注册到容器中的 bean 的名称。

运行效果:

除了 spring 本身注册的一些 bean 之外,可以看到最后一行,已经将 BeanConfig 这个类注册进容器中了。

3.指定要扫描的包(使用@ComponentScan 的 valule 属性来配置),创建一个controller 包,并在该包下新建一个 AppController 类。

在类上加了@Controller注解,说明该类是一个 Component。在 BeanConfig 类中修改:

在 @ComponentScan 注解中指定了要扫描的包。

运行效果:

AppController 已经被注册进容器了。

4.excludeFilters 和 includeFilters 的使用

使用 excludeFilters 来按照规则排除某些包的扫描。

excludeFilters 的参数是一个 Filter[] 数组,然后指定 FilterType 的类型为 ANNOTATION,也就是通过注解来过滤,最后的 value 则是Controller 注解类。配置之后,在 spring 扫描的时候,就会跳过 io.mieux 包下,所有被 @Controller 注解标注的类。

使用 includeFilters 来按照规则只包含某些包的扫描。

在创建一个 service 的包,并创建一个 AppService 类,再加上一个 @Service 注解。

修改 BeanCofig 类:

运行效果:

配置里面,应该是只包含 @Controller 注解的类才会被注册到容器中,为什么 @Service 注解的类也被注册了呢?这里涉及到 @ComponentScan 的一个 useDefaultFilters 属性的用法,该属性默认值为 true,也就是说 spring 默认会自动发现被 @Component、@Repository、@Service 和 @Controller 标注的类,并注册进容器中。要达到只包含某些包的扫描效果,就必须将这个默认行为给禁用掉(在 @ComponentScan 中将 useDefaultFilters 设为 false 即可)。

运行效果:

5.添加多种扫描规则

1、如果使用的 jdk8,则可以直接添加多个 @ComponentScan 来添加多个扫描规则,但是在配置类中要加上 @Configuration 注解,否则无效。

2、也可以使用 @ComponentScans 来添加多个 @ComponentScan,从而实现添加多个扫描规则。同样,也需要加上 @Configuration 注解,否则无效。

6.添加自定义过滤规则

在前面使用过 @Filter 注解,里面的 type 属性是一个 FilterType 的枚举类型:

使用 CUSTOM 类型,就可以实现自定义过滤规则。

1、 首先创建一个实现 TypeFilter 接口的 CustomTypeFilter 类,并实现其 match 方法。

这里简单对扫描到的类名进行判断,如果类名包含”Co“的就符合条件,也就会注入到容器中。

2、对 BeanConfig 进行修改,指定过滤类型为 Custom 类型,并指定 value 为 CustomTypeFilter.class。

运行效果:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
入伏吃什么好入伏吃什么 云相册里的照片变得有点模糊怎么办,谢谢 手机相册删掉的照片会同步到云相册吗 为什么丢掉的照片从云相册找回后看不清楚 华为手机云相册为什么会变模糊? 狼疮抗凝物筛选和确认试验都为0怎么办 红斑狼疮患者中有60岁以上的吗? 请确认是否是水肿性红斑狼疮 寻常狼疮诊断 红斑狼疮的诊断标准是什么? 没开庭之前撤诉可以退诉讼费吗 10月5日出生的人是什么星座? 这个是什么意思 大概多长时间? ...声音有点像陈慧娴黑街里粗犷的声音,。记得歌曲开头是 叮叮当的一... 男子回应“不用洗发水变满头黑发”:那只是第一步,想要长头发要注意什... 广州的小米之家有小米2S的耳机卖吗 梦见死了的亲人什么意思? 时间管理有哪些有效方法? 梦见自己的牙被拔了 梦见牙被拔掉了什么意思? 请问武汉有什么号的IT公司呢,想了解一下,以后要回去 有没有人去过武汉巨匠IT面试过的,是个怎么样的公司? 四川交通职业技术学院的物流管理专业怎么样?急 四川旅游学院物流管理专业如何 2022四川哪些职业学校有物流服务与管理专业 普通生推免由谁负责遴选 研究生考试2022年12月26日哪些专业考试 如何鉴别荧光剂 象征神秘的动物 世界上最神秘的生物 扫地机扫描组件在哪里 dtof激光扫描组件异常 东芝打印机扫描组件未就绪 光谱共焦扫描组件包括什么? 施乐m355扫描组件怎么拆 椰子水有电解质吗 dnf辉煌耀世矛和快乐棍怎么样 dnf荒古长棍好还是辉煌耀世好 圣耀比辉煌耀世提升多少 DNF里辉煌耀世的效果会抵消贪食戒指的暴击加成吗? ...?可以推广某种东西的可以让别人扫描二维码一键关注的?_百度... 我找了清明雨上的简谱,是1=D(D的前面有个小写的b),在吉他上怎么弹?_百 ... 寻找&lt;清明雨上&gt;这首歌的简谱 会计试用期自我评价怎么写简短 芥蓝种植需要注意什么 收集原始资料最主要的方法 市场营销调研中收集原始资料的方法主要有哪三类 怎样学PS CAD 3D 啊??? 对于初学者,如何学好PS与CAD? 如何学好CAD,PS和3D?