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

第七章 Spring-Boot框架

第七章 Spring-Boot框架

1. 对SpringBoot框架的理解

Spring Boot旨在简化基于Spring的应用开发,提供以下核心功能:

  • Starter起步依赖:提供一系列封装了常用依赖配置的starter,简化项目依赖管理。
  • 自动配置:依据环境条件(如是否引入特定依赖、配置项是否存在等)自动创建和配置Bean。
  • Jar包方式运行:内嵌Web服务器(如Tomcat),使应用可以打包成可执行的JAR文件直接运行。

2. 常见的Spring Boot Starter

  • 官方Starter:命名规则为spring-boot-starter-xxxx,例如spring-boot-starter-web用于Web开发支持。
  • 第三方Starter:遵循xxxx-spring-boot-starter命名模式,如mybatis-spring-boot-starter提供MyBatis支持。

常见Starter包括但不限于:

  • spring-boot-starter-web
  • spring-boot-starter-aop
  • spring-boot-starter-data-redis
  • spring-boot-starter-data-elasticsearch
  • spring-boot-starter-amqp
  • spring-boot-starter-data-mongodb

3. Spring Boot配置优先级

配置优先级从高到低排序如下:

  1. 命令行参数:例如--server.port=10010
  2. Java系统属性:例如-Dserver.port=9001
  3. application.properties
  4. application.yml
  5. application.yaml

外部配置(命令行参数和Java系统属性)优先级高于内部配置文件。

4. Spring Boot自动配置原理

自动配置的核心在于@EnableAutoConfiguration注解,它通过@Import导入一个实现了ImportSelector接口的选择器。此选择器读取classpath下META-INF/spring.factories或新的XXxxxSpringAutoConfiguration.imports文件中的自动配置类,并根据条件注解(如@ConditionalOnClass)决定是否加载这些配置类。

在Spring Boot 3.0之后,自动配置类不再通过spring.factories声明,而是使用新的配置文件。

5. 如何自定义Starter

创建自定义Starter通常需要两个模块:

  • xxx-spring-boot-starter:管理依赖关系。
  • xxx-spring-boot-autoconfigure:实现自动配置逻辑。

自动配置模块实现步骤:

  1. 编写自动配置类:使用@Configuration@Bean注解定义Bean,并可通过@Conditional系列注解控制Bean的加载条件。
  2. 配置自动配置类:在META-INF/spring.factories(对于Spring Boot 2.x及之前版本)或新的META-INF/spring/xx.SpringAutoConfiguration.imports(对于Spring Boot 3.x及以上版本)中注册自动配置类。

完成上述步骤后,自定义Starter即可被其他项目引入并使用。

http://www.dtcms.com/a/411289.html

相关文章:

  • 网站html静态化解决方案网站制作公司 北京
  • 金仓数据库实现电子证照系统从MongoDB平滑迁移,国产化替代迎来新典范
  • CAN总线学习(四)错误处理 STM32CAN外设一
  • 【OpenGL】LearnOpenGL学习笔记28 - 延迟渲染 Deferred Rendering
  • 莱芜梆子网站昆山网站建设需要多少钱
  • 站长交流装潢设计什么意思
  • web核心—HTTP
  • 线程池导入大数据量excel
  • Spring Boot 3.x + Security + OpenFeign:如何避免内部服务调用被重复拦截?
  • 全国免费发布信息网站大全wordpress 修改文章id
  • 公司网站设计费计入什么科目app科技网站建设
  • 从需求到实现:如何解决证件照标准化难题的?
  • C++第九篇:friend友元
  • 软件工程咋理解?用 “开奶茶店” 讲透瀑布模型 / 敏捷开发
  • 如何在WordPress中添加短代码
  • 资源型网站建设 需要多大硬盘招牌设计 创意logo
  • 数据库索引简介
  • 基于三角测量拓扑聚合优化的LSTM深度学习网络模型(TTAO-LSTM)的一维时间序列预测算法matlab仿真
  • 关键词网站查询产品展示网站源码php
  • TOGAF ® 标准与循环经济:为可持续与责任型 IT 而设计
  • C盘内存不足,清除或转移VS2022缓存文件Cache
  • 玉米病叶识别数据集,可识别褐斑,玉米锈病,玉米黑粉病,霜霉病,灰叶斑点,叶枯病等,使用yolo,coco,voc对4924张照片进行标注
  • 修改Linux上的ssh的默认端口号——及其客户端使用ssh连接不上Linux问题排查解决
  • 连接世界:网络请求 `wx.request`
  • 安徽省建设厅网站打不开批量导文章到wordpress
  • 用一个OneKey MCP把付费的AI Agent MCP的价格打下来 - DeepNLP OneKey MCP Agent Router项目
  • 绿算技术与清智图灵完成产品兼容性互认证
  • 成都微信网站开发黄骅贴吧
  • Redis监控告警体系搭建:使用Redis Exporter + Prometheus + Grafana
  • 制作网站价格不一wordpress 英文月份