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

相关推荐
魔芋红茶1 小时前
spring-initializer
python·学习·spring
西岭千秋雪_1 小时前
Redis性能优化
数据库·redis·笔记·学习·缓存·性能优化
随便取个六字1 小时前
GIT操作 学习
git·学习
chuanauc1 小时前
Kubernets K8s 学习
java·学习·kubernetes
小张是铁粉2 小时前
docker学习二天之镜像操作与容器操作
学习·docker·容器
一头生产的驴2 小时前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf
小张是铁粉2 小时前
oracle的内存架构学习
数据库·学习·oracle·架构
HERR_QQ2 小时前
【unify】unify的微信小程序开发学习 (to be continued)
学习·微信小程序·小程序
HuashuiMu花水木2 小时前
Matplotlib笔记4----------图像处理
图像处理·笔记·matplotlib
DES 仿真实践家3 小时前
【Day 11-N22】Python类(3)——Python的继承性、多继承、方法重写
开发语言·笔记·python