第七章 SpringBoot框架

简介: afvafqafqf

聊聊你对SpringBoot框架的理解 ?
SpringBoot是现在Spring家族最为流行的子项目,因为采用原始的SpringFramework框架开发项目,配置起来非常的繁琐,所以在Spring的4.0版本之后,Spring家族推出了SpringBoot框架,而Springboot就是来解决Spring框架开发繁琐的问题的,是用来简化spring框架开发的。
主要提供了这么三大块功能:
starter起步依赖。springboot提供了各种各样的starter,在starter起步依赖中,就封装了常用的依赖配置,大大简化了项目引入依赖坐标的复杂度。
自动配置。 这也是springboot中最核心的功能,springboot可以根据特定的条件(当前环境是否引入对应的依赖、配置文件中是否有某个配置项、当前环境是否已经有了某个bean)来创建对象的bean,从而完成bean的自动配置。
jar包方式运行。 springboot中内嵌了web服务器,所以我们开发的web项目,也可以直接打成一个jar包,直接基于java -jar 执行运行,非常的方便。
当然,这些呢,只是Springboot中提供的核心功能,还有其他的一些小功能,都是非常实用的 。

SpringBoot框架常见的starter你都用过哪些 ?
spring-boot-starter-web (嵌入tomcat和web开发需要servlet与jsp支持)
spring-boot-starter-aop (aop开发支持)
spring-boot-starter-data-redis (redis支持)
spring-boot-starter-data-elasticsearch (es支持)
spring-boot-starter-amqp(消息队列支持)
spring-boot-starter-data-mongodb (mongodb的支持)
mybatis-plus-boot-starter(mybatis plus的支持)
mybatis-spring-boot-starter(mybatis的支持)
那这些个starter,其实分为两类,一类是springboot官方提供的,命名都是:spring-boot-starter-xxxx;另一类是第三方框架提供的,命名都是:xxxx-spring-boot-starter。
Spring Boot配置的优先级?
SpringBoot项目中,可以在很多地方来配置项目中的配置项,那这里我主要说两个方面:一个是配置文件,一个是外部配置。
在springboot项目中,支持三类配置文件,分别是:application.properties、application.yml、application.yaml。 而这三类配置文件的优先级最高的是 application.properties,其次是 application.yml,最后是 application.yaml。
而外部配置呢,常用的有两种配置形式,一种是java系统属性,比如:-Dserver.port=9001;另一种是命令行参数,比如:--server.port=10010。而命令行参数的优先级要高于java系统属性。
而整体上,外部配置的优先级要高于项目内部的配置文件中的配置,所以整体来说配置文件的优先级由高到低的顺序为:
命令行参数 > java系统属性 > application.properties > application.yml > application.yaml
SpringBoot自动配置的原理是什么?
嗯,好的,它是这样的。
其实SpringBoot自动配置的核心,是引导类上加的注解@SpringBootApplication 底层封装的一个注解,叫@EnableAutoConfiguration,这个注解才是实现自动化配置的核心注解。
该注解通过@Import注解导入对应的配置选择器,导入了一个ImportSelector接口的实现类。 而在这个类的内部呢,读取了该项目和该项目引用的Jar包中的classpath路径下META-INF/spring.factories文件中的所配置的类的全类名。
在这些配置类中所定义的Bean,会根据条件注解@Condition系列注解所指定的条件来决定是否需要将其导入到Spring容器中。
一般条件判断会有像@ConditionalOnClass这样的注解,判断是否有对应的class文件,如果有则加载该类,把这个配置类的所有的Bean放入spring容器中使用。
但是这里要说明一点哈,就是刚才提到的系统配置类声明的配置文件 META-INF/spring.factories, 在springboot3.0版本之后,就已经废除了,不会在这个文件中配置自动配置类了,替换成了一份新的配置文件,配置文件名比较长,记不住,后缀名为:XXxxxSpringAutoConfiguration.imports。
SpringBoot中如何自定义starter?
嗯,这个我知道,之前在项目中,我们封装过的,像阿里云OSS操作的starter。
首先,先说模块哈,自定义starter,我们通常会定义两个maven模块。
一个是:xxx-spring-boot-starter ,这个模块主要负责管理依赖,最后项目中引入的就是这个模块。
另一个是:xxx-spring-boot-autoconfigure,这个模块负责自动配置功能,所有的自动配置的核心代码,都定义在这个模块中。并在在starter模块中,还要引入autoconfigure这个模块的依赖。
然后再来说核心的autoconfigure模块的实现。
第一步呢,就是要根据具体的需求,编写自动配置类。 基于@Configuration注解定义配置类,然后使用@Bean注解来声明bean,可以通过@Conditional系列的注解,根据条件决定是否声明这个bean。
第二步,就是需要在META-INF/spring.factories配置文件中,根据规则配置自动配置类的全类名。 如果是SpringBoot3.x版本,则需要在新的配置文件,META-INF/spring/xxxx.SpringAutoConfiguration.imports文件中配置自动配置类的全类名。
基本上,就这么两块儿。定义好了之后,在各个项目中,就可以引入对应的starter直接使用了。


相关文章
|
2月前
|
机器学习/深度学习 监控 算法
基于 YOLO26的5类人体行为姿态智能检测(中英文双版) | 附完整源码与效果演示
本文介绍了基于YOLO26的人体行为姿态智能检测系统的设计与实现。该系统采用YOLO26作为基础模型,实现了对5种人体行为姿态的实时检测。系统的主要特点包括: 高精度:采用YOLO26作为基础模型,结合数据增强和模型优化技术,提高了检测精度。 实时性:YOLO26的推理速度快,能够实现实时人体行为姿态检测。 多场景适应性:模型在不同场景下都能保持较好的检测性能。 易于部署:系统的安装和部署过程简单,便于在实际应用中使用。 基于YOLO26的人体行为姿态智能检测系统在智能安防、体育训练、智能家居等领域具有广泛的应用前景。未来,我们将进一步优化模型,提高检测精度和速度,拓展检测的行为类别,为更多
|
2月前
|
消息中间件 存储 Kafka
基于Flink CDC的企业级日志实时入湖入流解决方案
本文由阿里云Flink CDC负责人徐榜江与高级产品经理李昊哲联合撰写,详解企业级日志实时入湖入流方案:基于YAML的零代码开发、Schema自动推导、脏数据处理、多表路由及湖流一体(Fluss+Paimon)架构,显著提升时效性与易用性。
344 2
基于Flink CDC的企业级日志实时入湖入流解决方案
|
SQL 监控 NoSQL
架构师第一课,一文带你玩转 ruoyi 架构
我理解的架构/框架应该有以下功能: 1.满足日常开发功能,如单点登陆、消息队列、监控等; 2.规范开发者的开发,指定代码格式、注释等; 3.提高开发效率,提供一系列的封装方法,并减少bug的产生率。 下文将详细介绍ruoyi框架。
8928 1
架构师第一课,一文带你玩转 ruoyi 架构
|
Java API Maven
IDEA+Maven+多个Module模块(创建多模块SpringBoot整合项目)
IDEA+Maven+多个Module模块(创建多模块SpringBoot整合项目)
1523 1
|
4月前
|
传感器 人工智能 数据可视化
构建AI智能体:五十三、反应式应急+深思式优化:反应速度与规划智慧的平衡
智能体系统设计的混合架构研究 本文探讨了智能体系统的两种基本范式及其融合架构。反应式智能体采用"感知-行动"模式,具有响应速度快、资源消耗低的特点,适用于紧急场景;深思熟虑智能体采用"感知-推理-行动"模式,具备复杂问题求解能力,但计算成本高。研究表明,最先进的解决方案是分层混合架构:底层反应层处理紧急任务,上层深思层负责战略规划,二者通过动态交互机制协作。这种架构在扫地机器人等应用场景中展现出显著优势,既能快速应对突发情况,又能执行长期规划任务。
432 11
|
11月前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
1342 8
|
前端开发 容器
怎么让一个 div 水平垂直居中
要使一个 `div` 元素在页面上水平垂直居中,可以采用 CSS 的 Flexbox 或 Grid 布局方法。使用 Flexbox 时,可在父元素上设置 `display: flex; justify-content: center; align-items: center;`,而子 `div` 将会自动在中心显示。另一种方法是使用 Grid 布局,设置父元素 `display: grid; place-items: center;` 也能达到相同的效果。
|
消息中间件 存储 网络协议
RabbitMQ的使用
这篇文章详细介绍了RabbitMQ的消息中间件概念、核心组件、通过Docker的安装方法和基本使用步骤,并展示了如何在Spring Boot中整合RabbitMQ,包括依赖配置、消息的发送和接收示例。
RabbitMQ的使用
|
消息中间件 存储 NoSQL
RabbitMQ入门指南:初学者也能读懂的教程(四)
RabbitMQ入门指南:初学者也能读懂的教程
384 0

热门文章

最新文章