• SpringBoot 04 多环境配置和配置文件小技巧


    4.1 多环境配置


    • 首先 配置文件 是可以写在 四个位置的,官方 给过 解释。看下图。
      在这里插入图片描述
      file:项目目录下。
      classpath:就是 我们的那个 resources 目录下。

    上述图片的 顺序 指的是 优先级。也就是说 如果 存在 file:./config/ 下的 application.yaml 的话,就以 这个 yaml 为主!

    实际开发中,可能会有多套 配置。那么 如何 选择 一个配置文件,然后 启动项目呢?

    • application.properties 如何实现多环境配置

    多套配置文件的格式:application-环境名

    application.properties 里面 设置

    spring.profiles.active = 环境名
    
    • 1
    • application.yaml 如何实现多环境配置

    yaml 支持 环境分块 处理。就是 一个文件里面,可以 处理 多个 环境配置的内容。都以三个短横线分隔 —

    server:
    	port: 8081
    spring:
    	profiles:
    		active: dev # 激活 dev 环境的配置
    
    ---
    server:
    	port: 8082
    spring:
    	profiles: dev #环境名
    
    ---
    server:
    	port: 8083
    spring:
    	profiles: test #环境名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4.2 配置文件小技巧

    application.yaml/properties自动装配 联系很大,如果我们 随便 选择 一个配置类。点进去 看一下,就会发现奥秘了。

    • 比如 HttpEncodingAutoConfiguration

    在这里插入图片描述
    首先映入眼帘的是 自动装配。点击去 你会 看到 @Configuration 也就是说它是个装配类。

    在这里插入图片描述
    @ConditionalOnMissingBean:判断当前这个 类 是否 已经 注册 Bean,如果 注册了 就不进行拦截。

    @Bean:把 一个 方法 注册到 IOC 容器中,变成一个 Bean。它就可以 getBean 直接拿到这个 方法了。但还是 依赖于 自己的 类。

    在这里插入图片描述

    ServerProperties.class 然后 我们去看下 这个 允许配置属性的这个类。
    在这里插入图片描述
    在这里插入图片描述

    @ConditionalOnWebApplication:根据不同的条件,来判断当前的配置或者类 是否生效。**比如我们上述图的意思是 是否是一个 Servlet 类型的应用,其实就是 WEB 应用。**如果不是,那这个配置肯定不生效。

    @ConditionalOnClass:是否存在一个类,如果存在就生效。不存在就拉倒。比如上图的意思是,是否存在 编码过滤这个类。

    @ConditionalOnProperty:是否存在 这样的配置属性。如果不存在则怎么样。上述图的意思是说,如果不存在 server.servlet.encoding 那么就帮你填写上,而且 值 为 enabled。

    我操,这一下子 就明白了。有个 专门 接受 配置文件 控制的 属性类。然后 这个 属性类 肯定对 我们的 这个 装配类 有影响。

    在这里插入图片描述
    下面的这个 就是 它的 所有 属性。这玩意 在 2.2 那阵,还没这么 牛逼呢。现在 属性 太多了。
    在这里插入图片描述

    • 我们来 自己 测试一下。

    在这里插入图片描述
    综上所述,可以总结一个小技巧:在我们的配置文件中,其实想要做一个配置。目标是明确的。就是找到想要配置的那个自动配置类。然后 去 那个 类下面 去找一下,我们可以 配哪些东西。可以怎么配,前缀是什么,都能找到。


    4.3 自动装配原理的精髓

    1. SpringBoot 启动的时候,会根据 @SpringBootApplication 注解加载大量的 自动配置类。
    2. 这个时候,我们就要观察,我们所需要的功能是否在SpringBoot默认的自动装配类中。(没有的话,那肯定要去 pom.xml 中引入 依赖呀。)
    3. 其次,我们再去 看下 自动配置的类中,到底配置了哪些 组件(Bean),如果 足矣。那么就不需要 再去 手动配置了。
    4. 自动装配的类,可以改其配置。如果有需求的话,那么可以在 配置文件中 进行 指定的属性值 修改。

    xxxxAutoConfiguration:自动配置类,可以给IOC容器中 添加 组件(Bean)
    xxxxProperties/yaml:配置文件,可以修改 自动配置类中的 相关属性。

    如果想要测试那些 配置类生效了,可以用

    debug: true
    
    • 1

    在这里插入图片描述
    Positive matches:表示生效的配置。
    在这里插入图片描述Negative matches: 表示没有生效的配置。

  • 相关阅读:
    Python基础语法速成1
    vue的过滤器
    JDBC 在性能测试中的应用
    关于测试/开发程序员技术的一些思考,水平很高超的,混不下去了......
    Vue(四)——全局事件总线, 消息订阅与发布 ,nextTick
    UI 自动化测试框架:PO 模式+数据驱动 【详解版】
    【附源码】Python计算机毕业设计球迷信息交流论坛
    iOS插件
    个人博客测试报告
    如何监听电脑屏幕是否发生切换
  • 原文地址:https://blog.csdn.net/qq_52606908/article/details/126072610