Spring原理
1.Bean的作用域和生命周期2.Spring自动装配的流程Bean的作用域作用域是啥作用域知道是Bean在Spring框架中的某种行为模式比如单例模式作用域表示Bean在spring中只有一份是全局共享的只要有一个人修改其他人也会看到作用域分为六种单例作用域SingletonDog类这个类只是一个普通的类他并没有交给springioc容器进行管理DogBeanConfig类这个类加了一个Component注解所以会被spring扫描到接着他的方法中有一个加了Bean注解虽然Dog类没有加上注解但是这里的方法已经把Dog给实例化了所以后续的getBeanDog.class可以获取到Dog类在容器中多次获取Bean结果总结多次获取Bean并输出对象的地址发现地址是一样的说明每次在springIOC中取出来的对象都是同一个这就是单例模式默认情况下spring中的bean都是单例模式多例作用域Prototype每次使用该bean的时候都会创建一个新的实例需要加一个Scope注解结果这样在多次获取这个scope的时候就会自动生成新的实例Web相关作用域请求作用域request需要加一个RequestScope注解结果一次请求就只有一个对象每次请求都会创建一个新的对象会话作用域session需要加一个SessionScope注解结果在一个会话中只有一个对象只有切换会话才会创建新的对象Application作用域需要加一个Application注解在一个应用中只能访问到同一个对象所有人共用的都是这一个除非这个服务器重启。websocket作用域链接断开就换新的否则一直是一个Bean的生命周期实例化为Bean分配内存空间createBeanInstance属性赋值Bean注入和装配populateBeanBean初始化 initializeBean执行各种通知执行初始化方法使用Bean销毁Bean流程图代码示意图结果举例子买毛胚房自己装修水电门窗然后等全部装好之后清扫一次然后入住到期销毁结束。SpringBoot自动配置什么叫SpringBoot自动配置当Spring容器启动的时候一些配置类Bean对象就会自动传入到IOC容器中去我们就不需要手动去声明Spring是如何把对象加载到SpringIOC容器中去的首先我们知道只有通过五大注解和Bean才可以把数据交给IOC容器进行管理前提是这些注解类必须和启动类SpringBootApplication处于同一个目录之下但是我们引入的第三方的jar包很明显不合这个启动类处于同一个目录为什么能够启动如何解决这个问题?ComponetScan组件扫描当使用这个注解的时候spring在启动的时候就会自动扫描这个注解的组件也可以扫描多个包Import导入直接导入类可以导入一个类也可以导入多个类实现Importselector实现importselector接口把需要使用的类导入即可缺点这几种方式都是需要知道第三方依赖中有哪些Bean对象或配置项但是我们不可能知道所有的Bean所以这个方法还是不适用如何解决解铃还需系铃人这个代码是第三方写的那么第三方肯定是知道需要使用哪些组件哪些Bean是刚需那只需要让第三方把全部事情做好最后再给我提供一个注解只需要让第三方自定义一个注解然后把需要使用到的Bean全部放在一起当我需要使用的时候我只需要使用这个注解那么我就可以使用到全部的这种注解一般使用Enable开头SpringBoot是如何实现自动配置的核心就在于SpringBoot的启动类Target({ElementType.TYPE})限定这个注解只能用在类、接口、枚举上不能用在方法、字段等。Retention(RetentionPolicy.RUNTIME)让注解在运行时依然保留Spring 框架才能在启动时读取并解析它。Documented标记这个注解会被包含在 JavaDoc 文档里。Inherited如果一个类被此注解修饰它的子类会自动继承这个注解Spring Boot 场景下主要是为了兼容一些继承场景。核心SpringBootConfiguration这个是一个加强版的configuration是一个加强版的配置类作为配置文件加速启动类和configuration的功能基本一样只是多了一层spring语义包装ComponenScan这个是用来扫描特定的包自动扫描被五大注解和bean标记的类是他们注册成为spring beanEnableAutoConfiguration灵魂Import{AutoConfigurationImportSelector.class}这一步自动就把实现了importselecttor接口的类全部导入这个selectImport方法就自动获取可以配置的配置类信息继续点进去基取所有基于 META INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imp orts ⽂件, META-INF/spring.factories ⽂件中配置类的集合.在我们导入的依赖中通常都会有这两个文件1.conditional注解当自动加载配置类的时候他不会一股脑全部加载进来而是通过conditional注解按照自己的判断只有满足一定的条件配置里面的才会生效2META-INF/spring.factories⽂件这个是spring内部提供的一个加载方式只需要在这个文件中配置即可spring会把对应的实现类注入到spring容器中去AutoConfigurationPackageRegistrar实现了 ImportBeanDefinitionRegistrar 类,就可以被注解Import导⼊到spring 容器⾥. (String[])(new PackageImports(metadata)).getPackageNames().toArray(new String[0]) :当前启动类所在的包名. 所以: AutoConfigurationPackage 就是将启动类所在的包下⾯所有的组件都扫描注冊到 spring 容器中.总结当程序启动的时候首先就会找到 SpringBootApplication然后 ComponentScan 就会进行包扫描扫描启动类所在的包及其子包SpringBootConfiguration 标记当前类是配置类等价于 Configuration然后 EnableAutoConfiguration 就会执行 AutoConfigurationPackage把启动类所在的根包位置记录下来并告知 Spring供后续配置使用Import(AutoConfigurationImportSelector.class) 就会根据配置文件按条件筛选并导入自动配置类。在Spring与JDK中Bean的区别在Spring中Bean表示的是被spring容器管理的Java对象在JDK中Bean表示的是普通的Java对象。在Spring中什么可以称之为Bean被五大注解或者Bean修饰的类或方法都会被Spring Ioc实例化成Java对象这些对象就叫做Spring Bean五大注解 Component Service业务层 Controller / RestController控制层 Repository数据访问层 Configuration配置类Bean依赖注入DIAutowiredSetter构造方法

相关新闻

Comsol超表面技术驱动下的光学双稳态现象研究

Comsol超表面技术驱动下的光学双稳态现象研究

Comsol超表面光学双稳态。「超表面这玩意儿做双稳态仿真,每次都像在玩跷跷板——参数调不好就翻车!」实验室里老张叼着咖啡杯吐槽的场景,估计每个搞光学的人都经历过。今天咱们用COMSOL折腾个非线性超表面双稳态模型,手把手教你避…

2026/5/17 7:51:15 阅读更多 →
互联网企业如何通过Vue.js实现多平台文件夹的目录结构秒传与分享?

互联网企业如何通过Vue.js实现多平台文件夹的目录结构秒传与分享?

前端大文件上传系统(纯原生JS实现)—— 专治各种不服IE9的倔强开发者 各位前端老炮儿们,今天给大家带来一个能兼容IE9的20G大文件上传系统,保证让你的客户感动到哭(或者吓跑)。毕竟在这个Vue3横行的时代&a…

2026/7/6 18:42:16 阅读更多 →
达梦数据库性能优化技术指南

达梦数据库性能优化技术指南

达梦数据库性能优化技术指南 一、前言 1.1 概述 性能优化是指在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。达梦数据库性能优化主要包含以下内容: 数据库架构优化数据库参数优化SQL 优化统计信息 1.2 核心工具…

2026/5/17 7:59:48 阅读更多 →

最新新闻

ADP Agent Portal入门:跨平台智能体部署全流程

ADP Agent Portal入门:跨平台智能体部署全流程

ADP Agent Portal是腾讯云2026年4月7日发布的跨平台企业智能体门户,支持一次性部署智能体到企业微信、飞书、腾讯会议等12个主流办公平台,无需重复开发。本文提供从注册到跨平台部署的全流程指南,包含可直接复用的API调用代码。 一、部署前准…

2026/7/7 13:50:38 阅读更多 →
PARP12在细胞死亡与抗病毒免疫中的调控机制及其治疗潜力

PARP12在细胞死亡与抗病毒免疫中的调控机制及其治疗潜力

PARP家族与PARP12的发现历程多聚ADP核糖聚合酶(Poly(ADP-ribose) polymerases, PARPs)是一类具有ADP核糖基转移酶活性的蛋白质家族,在DNA损伤修复、基因组稳定性维持、细胞死亡调控和免疫应答等多种生理病理过程中发挥关键作用。人…

2026/7/7 13:48:37 阅读更多 →
直流电机静音控制方案:TB9051FTG与PIC18LF47K40应用

直流电机静音控制方案:TB9051FTG与PIC18LF47K40应用

1. 项目概述:直流电机静音控制方案在工业自动化和消费电子领域,直流电机的噪声问题一直是工程师面临的挑战。传统PWM调速方案虽然简单高效,但开关噪声和电磁干扰问题显著。本项目采用东芝TB9051FTG电机驱动IC搭配Microchip的PIC18LF47K40微控…

2026/7/7 13:44:37 阅读更多 →
Si4732收音机芯片与PIC18F57Q43微控制器的设计与优化

Si4732收音机芯片与PIC18F57Q43微控制器的设计与优化

1. Si4732收音机芯片的核心特性解析 Si4732是Silicon Labs推出的一款高性能数字信号处理(DSP)收音机接收芯片,它彻底改变了传统模拟收音机的设计方式。这款芯片在业余无线电爱好者、便携式收音机制造商和专业通信设备厂商中享有极高声誉,主要得益于以下几…

2026/7/7 13:42:36 阅读更多 →
2026图片去水印工具教程:手机电脑软件、在线网站AI效果对比

2026图片去水印工具教程:手机电脑软件、在线网站AI效果对比

日常保存的截图、素材图、平台实拍图,大多会自带平台水印、文字水印、logo水印,影响图片整洁度与使用观感。很多个人用户都在寻找免费好用的图片去水印工具,但市面上工具繁杂,要么收费限次、要么画质压缩严重、要么操作复杂。本文…

2026/7/7 13:40:35 阅读更多 →
A3910与STM32L162ZE在电机控制中的高效应用

A3910与STM32L162ZE在电机控制中的高效应用

1. 认识A3910与STM32L162ZE这对黄金搭档第一次看到A3910和STM32L162ZE这两个型号时,我正为一个工业控制项目选型发愁。A3910是Allegro MicroSystems推出的全桥电机驱动芯片,而STM32L162ZE则是STMicroelectronics的超低功耗ARM Cortex-M3微控制器。它们看…

2026/7/7 13:40:35 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻