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

相关推荐
凯歌的博客5 小时前
springboot项目jar包启动, 配置文件外置
chrome·spring boot
卡布叻_星星5 小时前
Vue 生态演进指南:主流框架搭配以及Vue CLI vs Vite 与 Vue2 vs Vue3 核心区别
笔记
华舞灵瞳5 小时前
学习FPGA(六)锁相环
学习·fpga开发
小裕哥略帅6 小时前
PMP学习笔记--环境
笔记·学习
liuaa416 小时前
期刊论文笔记
笔记
HXR_plume6 小时前
【Web信息处理与应用课程笔记3】个性化检索(上)
笔记
Darkershadow7 小时前
python学习之串口通信
python·学习
JIngJaneIL8 小时前
基于java + vue个人博客系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
BullSmall8 小时前
普罗米修斯 的学习路径及建议
学习·prometheus
happyjoey2178 小时前
28天立创实力派开发板学习记录part1——DAY1-DAY8
学习