spring如何扫描有注释的类

银行监管报送系统介绍(十五):金融审计平台 金审平台主要包括基础、财务、结算、信贷和中间业务五大板块,主要服务于审计署对中国银行的各项审计任务,同时也可为行内审计、稽核检查、数据分析、总分行提供基础数据服务,为实现基础数据共享提供了有力的数据保障。2019年1月某全国性股份制商业银行收到审计署2019-23号文,文中指出为进一步提高审计数据质量,审计署审计组派员前往9家重点商业银行,就完善标准化数据的相关情况与各银行有关部门进行讨论协商。关于数据报送频率及报送内容:数据从2019年4月开始,按月报送,即于每月25日之前报送上月数据; 阅读详情
1.加载xml,初始化上下文,以ClassPathXmlApplicationContext为例

一般我们给它的构造方法转入1到多个配置文件,来初始化,如:

new ClassPathXmlApplicationContext("/spring-context-ioc.xml")

new ClassPathXmlApplicationContext(new String[]{"/spring-context-ioc.xml","/spring-context-ioc2.xml");

2.解析spring xml文件,并执行扫描


3.扫描配置文件夹下的所有的文件,下图文件有Service注释所以要注入


扫描的过程很有意思,spring框架能得到的只有我们配置的包名,如下:


如何通过这个包名来注入那么多的类呢?

首先,将File转为Resource:


再遍历所有Resource,用spring asm字节码工具解析文件,就可以得到这些类的所有类相关信息,比如有哪些属性,有哪些方法,哪些注释。


这样解析后就得到上面的类的注释,如果注释中有org.springframework.stereotype.Service,那么就应该被注入了。其它注释处理方法类拟。解析完了放进集合org.springframework.core.type.classreading.CachingMetadataReaderFactory.metadataReaderCache。这还没完,还需把定义加入集合org.springframework.beans.factory.support.DefaultListableBeanFactory.beanDefinitionMap,这样在context.getBean的时候就能得到对象了。简要的扫描过程如下:


迟滞比较器原理及计算 为什么要用迟滞比较器 在讲迟滞比较器之前,我们先看一个案例。 在产品设计中常常需要用到电机,而电机在从运转到停止过程中需要泄放能量,这种能量大部分以电压的形式反馈回电源母线(Vbus)导致Vbus母线电压升高,特别是功率大又转速快的电机需要急刹时,产生的反馈电压更高,严重时可能导致母线上其他器件的损坏。 为了防止将电机反馈的能量泄放掉,我们需要设计一个电路来检测母线电压,当母线电压高于某一安全阈值时,打开MOSFET Q1将母线上的能量通过电阻R5以热的形式消耗掉。 假如用一般的比较器,设计如下: Vbu 阅读详情

相关推荐

nRF52382低功耗蓝牙应用开发之入门教程-软件烧录

准备工作在上一篇文章讲过了,这里就讲讲nRFgo studio的使用 硬件准备: J-link:2线 供电:3.3V 如下图打开nRFgo studio界面介绍, 2、如果J-link正常,如下图 3、如果蓝牙芯片正常 4、烧录过程,如果蓝牙芯片之前有烧录过程序,需先点擦除,再点烧录 5、烧录代码路劲,例如 F:\nRF\SDK\nRF5_SDK_15.2.0_...

LinQiPing233的博客 1945

【Spring源码系列】Spring注解扫描-@ComponentScan底层原理解读

众所周知,@ComponentScan注解的作用是:将项目中所有被@Component注解标记的类,组装成BeanDefinition,然后以key value的形式注入到IOC容器中。

qq_43783527的博客 3603

COMSOL 6.4安装全攻略:安装包获取、许可证配置与避坑指南

多物理场仿真是现代工程与科研中不可或缺的技术手段,其核心原理在于将电磁、结构、流体、传热等不同物理过程的耦合效应置于统一环境中求解,从而真实模拟复杂系统行为。这类仿真平台能大幅提升产品研发与设计验证效率,广泛应用于电子散热、声学分析、电力设备等领域。在部署最新版本仿真软件时,安装与许可证配置往往成为影响工作效率的关键环节。本文系统梳理COMSOL 6.4在Windows平台的安装全流程,涵盖安装包获取、系统依赖准备、许可证配置、常见报错排查等实用经验,帮助工程师与科研人员一次性完成环境搭建,把更多时间投入真

weixin_30000735的博客 1351

spring之注解扫描

注解

weixin_66119119的博客 988

VSCode终端打不开?3分钟搞定Windows下Terminal配置(附最新JSON设置方法)

本文针对Windows系统下VSCode终端无法启动的常见问题,提供了详细的诊断与解决方案。核心在于更新已弃用的旧配置,采用最新的JSON设置方法,通过定义`terminal.integrated.profiles.windows`和指定`terminal.integrated.defaultProfile.windows`,快速修复并优化终端配置,实现三分钟内恢复正常使用。

flower的专栏 741

RAGFlow + GraphRAG+ 知识图谱 + QwQ32B探索实践

RagFlow 是一款开源的 RAG(Retrieval-Augmented Generation)引擎,专注于深度文档理解,能够助力企业及个人构建高效的 RAG 工作流程。借助大语言模型(LLM),它可以精准处理各种复杂格式的数据,为用户提供可靠的问答服务,并附上详实的引用依据。

技术引领业务创新 8万+

Spring中的注解扫描

创建接口TestRepository package ss.java.springannotationscan.repository; public interface TestRepository { void testRepositoryMethod(); } 实现类TestRepositoryImpl package ss.java.springannotationscan.repository.impl; import org.springframework.stereotype.Re

weixin_43912117的博客 4567

【YOLOv11多模态涨点改进】独家创新首发| TGRS 2026 |引入 CIFusion 通道交互融合模块,通过跨特征交互机制强化目标区域响应,适合多模态融合目标检测,小目标检测高效涨点

🔥本文提出了一种改进YOLOv11多模态目标检测模型的方法,通过引入CIFusion通道交互融合模块来提升RGB与红外特征融合效果。CIF模块采用通道级自适应交互机制,根据全局上下文动态分配不同模态通道的重要性,实现跨模态特征交互与互补信息融合。相比传统拼接或加权融合方式,CIF能够增强目标区域响应,抑制背景噪声,提高小目标和低对比度目标的检测性能。实验表明,该方法在DroneVehicle等数据集上显著提升了检测精度。论文还详细介绍了CIF模块的结构原理、实现代码及模型配置方法。

Ai缝合怪、助力小伙伴高效发论文 186

Spring注解扫描--源码解析

一、bean的定义BeanDefinition BeanDefinition的含义 BeanDefinition就是用来描述一个Bean或者BeanDefinition就是Bean的定义。 **Spirng官网描述** SpringIoc容器管理一个Bean或多个Bean,这些Bean通过我们提供给容器的配置元数据被创建出来(例如,在xml中的定义) 在容器中,这些Bean的定义用BeanDefinition对象来表示, 包含以下元数据: 全限定类名, 通常是Bean的实际实现类; Bean行

juziding的博客 1474

AI绘画与医疗可视化:用AI生成医学插图的实践

医疗可视化是医学教育、临床沟通和学术研究的核心工具。传统医学插图依赖手工绘制或专业3D建模,存在制作周期长、成本高、更新迭代慢等问题。随着深度学习技术的发展,AI绘画工具(如Stable Diffusion、DALL-E)展现出强大的图像生成能力,但医疗领域对插图的解剖准确性、标注规范性和语义完整性有极高要求,通用AI模型难以直接应用。本文聚焦AI技术与医疗领域的交叉创新,系统阐述如何通过数据预处理、模型定制化训练和后处理校验,构建符合医疗标准的插图生成系统。

大模型应用工坊 1788

AUTOSAR CP R18-10 架构总览与导航

AUTOSAR CP R18-10 架构总览 本文档系统整理了AUTOSAR CP R18-10版本的199篇技术规范,涵盖7大架构层级: 应用层(15篇):包含车身舒适、底盘控制、HMI、安全系统、动力系统等AI应用 RTE(1篇):虚拟功能总线规范 服务层(159篇):细分为系统服务(OS/ECU管理/加密)、存储服务、通信服务(CAN/LIN/Ethernet) ECU抽象层(20篇):I/O与通信硬件抽象 MCAL(41篇):微控制器驱动层 复杂驱动(14篇):CDD设计与SPAL支撑 规范模板(2

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 722

提升代码质量,使用插件对 java 代码进行扫描检查分析

maven-checkstyle-plugin 插件对 java 代码进行检查很多时候我们的代码写的不规范,比如没缩进、参数间没空格、导入的包没用到没删除、方法很长没有进行拆分、 直接对方法参数进行了赋值分配等等不规范的操作或写法。为了规范代码并提高代码的质量,以及扫描代码检测潜在的不合理代码,我们可以使用一些插件来进行代码扫描分析。maven-checkstyle-plugin 是 maven 提供的一个插件,用于扫描代码检测不合理需要改进的差代码。

西凉的悲伤博客 3554

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spring配置项之<context:component-scan base-package="..."/>

使用 @Component 虽然我们可以通过@Autowired或@Resource在 Bean 类中使用自动注入功能,但是 Bean 还是在 XML 文件中通过 进行定义 —— 也就是说,在 XML 配置文件中定义 Bean,通过@Autowired或@Resource为 Bean 的成员变量、方法入参或构造函数入参提供自动注入的功能。能否也通过注释定义 Bean,从 XML 配置文件...

yangtaohongyang的博客 300

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

spring注解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34194551的博客 77

spring使用注解时配置文件的写法

在spring的配置文件中: [code="xml"] [/code] 我们会看到这样写: [code="xml"] [/code] 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 AutowiredAn...

test_touch的专栏 147

使用 <context:annotation-config/> 简化配置

Spring 2.1 添加了一个新的 context 的 Schema 命名空间,该命名空间对注释驱动、属性文件引入、加载期织入等功能提供了便捷的配置。我们知道注释本身是不会做任何事情的,它仅提供元数据信息。要使元数据信息真正起作用,必须让负责处理这些元数据的处理器工作起来。而我们前面所介绍的 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotat...

一起喝咖啡吧 162

Spring 中 Bean 对象的存储和取出

Spring 中 bean 对象的存储和取出

bestme 514

Spring组件扫描的用例

该博客的普通读者知道我是Spring框架的大力支持者,但是我对应该使用它的方式持肯定的态度。 例如,我赞成显式对象实例化和显式组件连接,而不是自注释类,组件扫描和自动装配。 概念 尽管许多Spring开发人员都使用了这些概念,但是我的经验告诉我它们并不总是被完全理解。 一些解释是为了命令。 自注释类 自注释类是定义类如何通过Spring对类本身的注释进行实例化的类。 @C...

dlz00001的博客 189

Springboot的两种启动方式

1.直接在Controller类中添加主类启动 2.将所有的Controller集中放置在App类中:必须要添加一个包扫描的注释: @ComponentScan(basePackages={" “,” "}

qq_35069673的博客 490

Spring注解详解

概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取。注释和 Java 代码位于一个文件中,而

YuZongTao 755

springboot:test类中的UserService无法自动装配,解决方案

加上之后就ok了,如果还出现有问题可以检查一下mapper接口处是否把接口的注解写好了。即有无用@Service注释,或者有无其他service的bean配置漏了。那么可能就是spring启动的时候没有识别到我的bean。遇到这种问题一般先检查你的Service是否有bean。在扫描路径中少了我的service包所在的路径。本人也是新手,欢迎大家及时纠正!在这里是已经有注释了。

doy04114的博客 645

【P说】Spring基础知识

Maven Spring Spring的Maven依赖: <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <vers

solo_jm的博客 672

14.构建代码

SpringBoot不需要特殊的代码布局,不过,这里有一些最好的实践可以给你一些帮助。 14.1 使用默认包 当一个类没有任何关于包的声明,则认为这个类在默认包里,这种行为一般不建议使用并且尽量避免使用默认包。当在默认包中的类使用@ComponentScan、@EntityScan或@SpringBootApplication注解时,会导致Spring所有jar...

qq_38292660的博客 535

repositoryAutowire为null

repository不能在非String容器中装配,比如main方法和非组件化的类。 main方法是因为启动的时候并没有启动Spring容器,所以根本扫描不到repository来装配;而未注释为组件的类是因为扫描不到所以找不到repository来装配。 ...

海恩的博客 1169

spring的<context:component-scan base-package=""/>用法

使用 @Component 虽然我们可以通过@Autowired或@Resource在 Bean 类中使用自动注入功能,但是 Bean 还是在 XML 文件中通过 进行定义 —— 也就是说,在 XML 配置文件中定义 Bean,通过@Autowired或@Resource为 Bean 的成员变量、方法入参或构造函数入参提供自动注入的功能。能否也通过注释定义 Bean,从 XML 配置

chamy1213的博客 1163
上一篇: 如何用动态字段实现系统的扩展性?
下一篇: Spring的标注Autowired的required参数与自动注入关系是怎样的?
中中_软件工程师
博客等级 码龄20年 76粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值