当前位置: 首页 > news >正文

SpringBoot工作原理

优点:自动装配,起步依赖

起步依赖

原理就是maven的依赖传递

【A依赖B、B依赖C….,则我导入依赖A的时候,B,C都会被maven加载进来】

重点看看自动装配

概念:

当Spring容器启动后,一些配置类、bean对象就自动存入到IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。

(SpringBoot原理、SpringBoot自动配置原理):

在Spring Boot项目中的引导类上有一个注解@SpringBootApplication,这个注解是对三个注解进行了封装,分别是:

@SpringBootConfiguration ——表明当前是配置类,因此我们也可以在启动类下去声明第三方Bean对象

@EnableAutoConfiguration——实现自动化配置的核心注解

@ComponentScan——进行扫包【范围:默认为当前启动类所在包及其子包,因此如果在这个范围外配置了Bean、Component注解的类是不会被自动装配成Bean的】

自动装配的几个方案:

通过@ComponentScan添加扫描的范围【比较繁琐,需要知道第三方库所在的包名,如果库多了,我还需要一个一个手动去添加】

通过@Import导入,SpringBoot帮我们封装好了。@EnableAutoConfiguration注解

【封装了@Import注解】

含义是导入了这个类【实现了ImportSelector接口,所以必须实现selectImports方法】

该方法的返回值为String类型数组,即存放的是需要自动装配的类名

返回值为存放字符串的List集合,通过读取META-INF/spring.factories【springBoot3.0版本之后开始不建议用了,但是还有,在3.2版本之后废弃】 以及

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration

@EnableAutoConfiguration注解基于@Import注解导入对应的配置选择器,内部就是读取了该项目和该项目引用的Jar包的classpath路径下META—INFO/ spring.factories文件中所配置的类的全类名。在这些配置类中所定义的Bean会根据条件注解决定是否需要将其导入到Spring容器中

条件注解有:

@ConditionalOnClass:判断是否有对应的字节码class文件,如果有则加载当前类,把这个配置类的所有Bean放入Spring容器使用

@ConditionalOnMissingBean:判断环境中是否有对应bean,才注册bean到IOC容器...等等

http://www.lryc.cn/news/345931.html

相关文章:

  • 【Spring】Spring 整合 Junit、MyBatis
  • 【JVM基础篇】JVM入门介绍
  • 《21天学通C++》(第二十一章)理解函数对象
  • 2024.1.1 IntelliJ IDEA 使用记录
  • 扩展van Emde Boas树以支持卫星数据:设计与实现
  • 玩游戏专用远程控制软件
  • 机器人规划控制——工程化——心得日记-20240510
  • 2024年成都市标杆场景项目申报条件对象、奖励和认定材料流程
  • 前端Vue uView 组件<u-search> 自定义右侧搜索按钮样式
  • 【Linux网络编程】I/O多路转接之select
  • 三下乡社会实践投稿攻略在这里
  • 银河麒麟桌面版开机后网络无法自动链接 麒麟系统开机没有连接ens33
  • vue+onlyOffice+java : 集成在线编辑word并保存
  • linux上用Jmter进行压测
  • 【Java代码审计】代码审计的方法及常用工具
  • 我国吻合器市场规模不断扩大 国产化率有所增长
  • 深度剖析Comate智能产品:科技巧思,实用至上
  • Centos 7.9 配置VNCServer实现远程vnc连接
  • 设计模式-08 - 模板方法模式 Template Method
  • Android 适配阿拉伯语之vector图标镜像
  • 推荐4个可用的github国内镜像
  • 从项目开始学习Vue——02(若依框架)
  • 使用JavaScript日历小部件和DHTMLX Gantt的应用场景(二)
  • springboot整合redis多数据源(附带RedisUtil)
  • Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
  • Apache Flume事务
  • 根据部门id删除该部门下的员工(事务)
  • Java之String类
  • es终止快照恢复进程的方法
  • ubantu安装rabbbitmq