码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【笔记】Spring Boot 历史官方文档学习(持续更新)


    文章目录

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

    前言

    Spring Boot 2014正式发布1.0版本,距今已经快10年了。看历史官方文档了解重点feature, 帮助自己建立知识网络。
    与 Spring 5 官网历史文档学习 一样,尽量保证不误解文档作者的原意,不好翻译的会有原文摘录(包括一些专有名词),并辅以自己的理解。限于篇幅原因,只摘录工作中遇到过的或者是有兴趣的。

    1 Spring Boot 1.0

    • Spring Boot 1.0 官方文档

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

    • 专属的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 文件的思路一致
      connection:
      	username: admin
      	remoteAddress: 192.168.1.1
      
      • 1
      • 2
      • 3
      @Component
      @ConfigurationProperties(name="connection")
      public class ConnectionSettings {
      
      	private String username;
      	
      	@NotNull
      	private InetAddress remoteAddress;
      
      	// ... getters and setters
      
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
    • 支持 JSR-303 @NotNull 校验

    1.3

  • 相关阅读:
    【计算机网络 一 概述】
    Autosar诊断实战系列27-基于CANdiva的UDS自动化测试方法介绍
    Python网络编程多线程实现异步服务端
    Docker网络
    含文档+PPT+源码等]精品基于SSM的农产品交易平台[包运行成功]Java毕业设计SSM项目源码论文
    【校招VIP】产品项目分析之竞品分析
    什么是活动目录(Active Directory)
    zabbix监控
    【Linux】awk入门
    学习css 伪类:has
  • 原文地址:https://blog.csdn.net/chenghan_yang/article/details/132573450
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号