【笔记】Spring Boot 历史官方文档学习(持续更新)

文章目录

    • 前言
    • [1 Spring Boot 1.0](#1 Spring Boot 1.0)
      • [1.1 Spring Boot 1.0 特性 ------ 专属的Spring事件](#1.1 Spring Boot 1.0 特性 —— 专属的Spring事件)
        • [1.1.1 背景](#1.1.1 背景)
        • [1.1.2 原文解读](#1.1.2 原文解读)
      • [1.2 Spring Boot 1.0 特性 ------ 外部化配置](#1.2 Spring Boot 1.0 特性 —— 外部化配置)
        • [1.2.1 背景](#1.2.1 背景)
        • [1.2.2 原文解读](#1.2.2 原文解读)
      • 1.3

前言

Spring Boot 2014正式发布1.0版本,距今已经快10年了。看历史官方文档了解重点feature, 帮助自己建立知识网络。

Spring 5 官网历史文档学习 一样,尽量保证不误解文档作者的原意,不好翻译的会有原文摘录(包括一些专有名词),并辅以自己的理解。限于篇幅原因,只摘录工作中遇到过的或者是有兴趣的。

1 Spring Boot 1.0

1.1 Spring Boot 1.0 特性 ------ 专属的Spring事件

1.1.1 背景

Spring Boot 基础知识,排错或需要拓展Spring Boot的时候要考虑到这个

1.1.2 原文解读

在 ApplicationContext 创建完成之前,会依次发生以下事件:

  • ApplicationStartedEvent ------ 在 listeners 和 initializers 注册完成。
  • ApplicationEnvironmentPreparedEvent ------ 还未创建 context,但是其依赖的 Environment 已知。
  • ApplicationPreparedEvent ------ 在 refresh 之前,bean 定义全部加载完成。
  • ApplicationFailedEvent ------ 启动失败。

实际开发中可能不会用到这些事件,但是Spring Boot借助这些事件完成了许多功能。

You often won't need to use application events, but it can be handy to know that they exist. Internally, Spring Boot uses events to handle a variety of tasks.

1.2 Spring Boot 1.0 特性 ------ 外部化配置

1.2.1 背景

实现一套代码在不同的环境部署。实现外部化配置的方法:

  • properties
  • YAML
  • 环境变量
  • 命令行参数

1.2.2 原文解读

外部化配置的元素还能注入到bean,通过

  • @Value
  • Environment 抽象

PropertySource 读取配置的顺序,数字大的覆盖数字小的

  1. 命令行参数
  2. Java api System.getProperties()
  3. 操作系统环境变量
  4. @Configuration 标注的类,又由 @PropertySource 注入
  5. 外部包下的 application.properties
  6. 内部包下的 application.properties
  7. 默认配置 SpringApplication.setDefaultProperties

实际应用:自己的jar包提供默认实现(自己是个starter),生产项目依赖这个starter,运行生产项目覆盖这个配置

值得注意的是配置文件的读取优先级

  1. 当前目录/config
  2. 当前目录
  3. classpath 中的 /config
  4. classpath 的根目录

Spring Boot 1.0 yml 文件的缺点

  • @PropertySource 没法读到 YAML 的配置

@ConfigurationProperties(name="connection") 的使用

  • 用于简化公共前缀的冗余,与 yml 文件的思路一致

    yml 复制代码
    connection:
    	username: admin
    	remoteAddress: 192.168.1.1
    java 复制代码
    @Component
    @ConfigurationProperties(name="connection")
    public class ConnectionSettings {
    
    	private String username;
    	
    	@NotNull
    	private InetAddress remoteAddress;
    
    	// ... getters and setters
    
    }
  • 支持 JSR-303 @NotNull 校验

1.3

相关推荐
viperrrrrrrrrr711 分钟前
大数据学习(137)-大数据组件运行时角色
大数据·hive·学习·flink·spark
月白风清江有声28 分钟前
lsprepost岩石爆炸仿真——学习札记2
学习
翻滚吧键盘33 分钟前
Package vs. Directory (包 vs. 目录)
spring boot
万变不离其宗_834 分钟前
echarts使用笔记
前端·笔记·echarts
重庆小透明35 分钟前
【从零学习JVM|第七篇】快速了解直接内存
学习
无名之逆37 分钟前
大三自学笔记:探索Hyperlane框架的心路历程
java·开发语言·前端·spring boot·后端·rust·编程
yang_xiao_wu_37 分钟前
springboot+mybatis面试题
spring boot·后端·mybatis
水木石画室42 分钟前
Spring Boot 常用注解面试题深度解析
java·spring boot·后端
梦境虽美,却不长1 小时前
C语言 学习 宏命令(预处理) 2025年6月9日14:41:39
c语言·开发语言·学习
武昌库里写JAVA1 小时前
IDE(集成开发环境),集成阿里云的通义大模型
vue.js·spring boot·毕业设计·layui·课程设计