【笔记】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

相关推荐
hengzhepa15 分钟前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
哎呦没30 分钟前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
编程、小哥哥1 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
小小洋洋2 小时前
BLE MESH学习1-基于沁恒CH582学习
学习
IT学长编程2 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
杨哥带你写代码2 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
m0_689618283 小时前
水凝胶发生器,不对称设计妙,医电应用前景广
笔记
Ace'3 小时前
每日一题&&学习笔记
笔记·学习
A尘埃3 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23073 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端