码农知识堂 - 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

  • 相关阅读:
    AXI协议详解(9)-数据总线
    [第一章 web入门]粗心的小李
    orangePi与wiringPi库(二):元器件使用_orangepi wiring-CSDN博客
    谷歌浏览器的视频下载插件推荐
    凝露现象与检测
    jsp装修建材管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
    Java多并发(五)| JUC包下的并发容器(ConcurrentHashMap)& 并发工具类 & 原子变量类
    永州出入境检验实验室建设那些事
    第二课第一周第8节 风险得分计算+作业解析
    SAP 标准表
  • 原文地址:https://blog.csdn.net/chenghan_yang/article/details/132573450
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号