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

4.1 多环境配置


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

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

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

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

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

application.properties 里面 设置

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

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

server:
	port: 8081
spring:
	profiles:
		active: dev # 激活 dev 环境的配置

---
server:
	port: 8082
spring:
	profiles: dev #环境名

---
server:
	port: 8083
spring:
	profiles: test #环境名

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值