Spring之底层架构核心概念-过滤器

news2024/10/9 0:52:55

文章目录

  • 1.excludeFilters:排除过滤器
  • 2.includeFilters:包含过滤器
  • 3.问题:spring为什么能通过是否有@Component注解来判断是否需要去注册bean呢?
    • 3.1 看源码
    • 3.2 原因
  • 4.总结

1.excludeFilters:排除过滤器

用excludeFilters排除UserService 这个类后,UserService 虽然加了@Component注解但依然不能生成bean

@ComponentScan(value = "com.zjy",excludeFilters = {
        @ComponentScan.Filter(
                type = FilterType.ASSIGNABLE_TYPE,
                classes = UserService.class
        )
})

public class AppConfig {}
public static void main(String[] args) throws IOException {

    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
    UserService userService = (UserService) context.getBean(
           "userService");
   }

运行结果:

在这里插入图片描述

2.includeFilters:包含过滤器

UserService 类上没有加任何注解,spring在扫描时发现这个类没有@Component等注解就不会把这个类注册为bean

public class UserService{}

但是现在在AppConfig中用includeFilters把UserService包含进去 ,即使UserService 类上没有@Component,spring也会把它注册为bean

@ComponentScan(value = "com.zjy",includeFilters = {
        @ComponentScan.Filter(
                type = FilterType.ASSIGNABLE_TYPE,
                classes = UserService.class
        )
})
public class AppConfig{}
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

UserService userService = (UserService) context.getBean(
       "userService");
System.out.println(userService);

运行结果:

在这里插入图片描述

3.问题:spring为什么能通过是否有@Component注解来判断是否需要去注册bean呢?

过滤器FilterType分为:

  1. ANNOTATION:表示是否包含某个注解
  2. ASSIGNABLE_TYPE:表示是否是某个类
  3. ASPECTJ:表示否是符合某个Aspectj表达式
  4. REGEX:表示是否符合某个正则表达式
  5. CUSTOM:自定义

3.1 看源码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 原因

在扫描器中会把Component注解添加到 包含过滤器中

在这里插入图片描述

4.总结

好记性不如烂笔头,知道不如做到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nature级别图表:单细胞转录组细胞比例统计可视化函数

单细胞转录组细胞比例: 关于单细胞比例的计算和作图我们之前出过3期,单细胞比例的展示是很多单细胞文章必不可少的内容:跟着Cell学单细胞转录组分析(六):细胞比例计算及可视化 相信跟着学习的小伙伴已经掌握了。最近学习一篇《nature medici…

JavaScript 数组-概念,创建数组,遍历数组,新增元素

JavaScript 数组-概念,创建数组,遍历数组,新增元素 目录JavaScript 数组-概念,创建数组,遍历数组,新增元素1. 数组的概念2. 创建数组2.1 数组的创建方式2.2 利用 new 创建数组2.3 利用数组字面量创建数组2.…

模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序)

模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序) 目录 模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序)分类结果基本介绍程序设计参考资料分类结果

深度学习实验(五)——循环神经网络编程

深度学习实验五:循环神经网络编程 本次实验练习使用torch.nn中的类设计一个循环神经网络进行MNIST图像分类。 在本次实验中,你要设计一个CNN,用于将282828 \times 282828的MNIST图像转换为MMDM\times M\times DMMD的特征图,将该特征图看作是…

我,做了两年程序员,存了巨款5000,你们拿什么跟我比?

🕐没错,标题所见,从21年1月份开始从事程序员工作也过了两年了,今年还是没有存到钱。 今年换了一份工作,四月份的时候,从惠州换到了广州工作,从制造业转行到了政务行业,工资涨了&…

Keithley 2604B数字源表-安泰测试

Keithley 2600B 系列系统 SMU 仪器是业界标准电流-电压源和测量解决方案,适用于高度自动化生产测试应用。 双通道和单通道型号都紧密集成一个精密电源、真正电流源、数字万用表和具有脉冲生成功能的电子负载。 另外,TSP? 技术可运行完整测试程序&#x…

多点双向重发布的应用

目录 1.拓扑图 2.实验思路 3.主要配置 4.测试 5.实验总结 1.拓扑图 2.实验思路 在配置完RIP和OSPF之后,在2,3号设备上进行多点的双向重发布由于在进行了多点的双向重发布之后,会出现大量的负载均衡,导致选路不佳的问题解决办…

前端工程师leetcode算法面试必备-二叉树深度广度遍历

一、前言 Medium 难度主要考察结合二叉树性质的 CRUD 操作,而这一切的基础都离不开遍历二叉树。 二叉树是图的子集,因而同样适用以下两种搜索思想: **DFS(深度优先搜索):**沿着根节点递归下去&#xff0c…

普通程序员怎么赚多份钱?解锁更多赚钱新姿势

在当下这个社会,学会如何make money很重要。 咱们是个俗人,赚钱才是社会生存的头等大事。这不是高山流水的世界,而是能力创造财富,对于程序员来说,更是如此。 作为程序员,我们有更多挣钱的姿势!…

通过一个测试项目了解EF CORE

首先用vs2019创建一个.net core项目 可以是控制台应用程序,也可以是asp.net core项目 如果你使用控制台应用程序, 则可以在Main方法中直接使用EF Core进行CRUD操作。这通常用于测试或开发时快速进行数据库操作。 如果你使用ASP.NET Core应用程序, 则可以在控制器中使用EF Cor…

低温超导系统中实现液氦温度准确控制的解决方案

摘要:针对目前两种典型低温超导测试系统中存在的液氦压力控制精度较差的问题,本文提出了相应的解决方案。解决方案分别采用了直接压力控制和流量控制两种技术手段和配套数控阀门,结合24位AD和16位DA的超高精度的PID真空压力控制器和压力传感器…

第三十九章 贪心算法——区间问题(下)

第三十九章 贪心算法——区间问题(下)一、区间问题1:最大不相交区间数量1、思路详解2、代码实现二、区间问题2:区间覆盖1、问题2、思路3、代码一、区间问题1:最大不相交区间数量 1、思路详解 这道题和前一章讲的最后一…

IDEA 使用的小技巧

1、调整 idea 的虚拟内存: 尽管本质都是去改变 .vmoptions 配置文件,但推荐使用Change Memory Settings去调整,选择Edit Custom VM Options 或者在本地磁盘目录更改,通过某些方法破解的 idea 很可能造成 idea 打不开的情况 2、显…

【数据结构-源码分析】HashMap源码分析(超级详细)

文章内容1、HashMap简介2、类结构3、属性4、构造方法5、方法5.1、put方法5.2、resize方法6、jdk1.8的优化1、HashMap简介 HashMap基于哈希表的Map接口实现,是以key-value存储形式存在。(除了不同步和允许使用 null 之外,HashMap 类与 Hashta…

Oracle数据库同步复制工具Beedup产品功能(二)

接续...... 8、对象比较 Beedup提供主从库相关对象比较功能,比对结果包含各类对象概要统计及差异详情。 支持Oracle、SQL Server、MySQL、DB2 对象比较。 9、 对象恢复 Beedup在向从库写入数据时会禁用目标表的关联触发器,另外对于Oracle 序列的状态…

MySQL复制技术方案——GTID复制配置

在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制,这也是DBA日常工作中最经常的操作了。GTID的主从模式替代了MySQL前期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可靠。 搭建主从时…

SQL SELECT 语句

SELECT 语句用于从数据库中选取数据。 SQL SELECT 语句 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中,称为结果集。 SQL SELECT 语法 SELECT column1, column2, ... FROM table_name; 与 SELECT * FROM table_name; 参数说明: …

SVM训练莺尾花数据集

SVM训练莺尾花数据集 代码在莺尾花数据集上训练SVM,数据集由莺尾花的测量值及其相应的物种标签组成。该模型使用70%数据用于训练,然后剩余部分进行测试。其中′fit′fit′fit′方法在训练集上训练数据,′score′score′score′数据在返回模型…

HTC FOCUS3在PC端串流FOHEART H1数据手套(腕带)

本教程介绍使用FOHEART H1数据手套与HTC腕带式追踪器驱动VR中的虚拟手运动,实现手部的追踪及定位。与之前教程(HTC FOCUS 3连接FOHEART H1数据手套)不同,这次我们的场景内容运行在PC端,而不是头显端,使用VI…

基于Vue和SpringBoot的电商管理系统的设计与实现

作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云…