
file:项目目录下。classpath:就是 我们的那个 resources 目录下。上述图片的 顺序 指的是 优先级。也就是说 如果 存在 file:./config/ 下的 application.yaml 的话,就以 这个 yaml 为主!
实际开发中,可能会有多套 配置。那么 如何 选择 一个配置文件,然后 启动项目呢?
多套配置文件的格式:application-环境名
在 application.properties 里面 设置
spring.profiles.active = 环境名
yaml 支持 环境分块 处理。就是 一个文件里面,可以 处理 多个 环境配置的内容。都以三个短横线分隔 —
server:
port: 8081
spring:
profiles:
active: dev # 激活 dev 环境的配置
---
server:
port: 8082
spring:
profiles: dev #环境名
---
server:
port: 8083
spring:
profiles: test #环境名
application.yaml/properties 与 自动装配 联系很大,如果我们 随便 选择 一个配置类。点进去 看一下,就会发现奥秘了。

首先映入眼帘的是 自动装配。点击去 你会 看到 @Configuration 也就是说它是个装配类。

@ConditionalOnMissingBean:判断当前这个 类 是否 已经 注册 Bean,如果 注册了 就不进行拦截。
@Bean:把 一个 方法 注册到 IOC 容器中,变成一个 Bean。它就可以 getBean 直接拿到这个 方法了。但还是 依赖于 自己的 类。

ServerProperties.class 然后 我们去看下 这个 允许配置属性的这个类。


@ConditionalOnWebApplication:根据不同的条件,来判断当前的配置或者类 是否生效。**比如我们上述图的意思是 是否是一个 Servlet 类型的应用,其实就是 WEB 应用。**如果不是,那这个配置肯定不生效。
@ConditionalOnClass:是否存在一个类,如果存在就生效。不存在就拉倒。比如上图的意思是,是否存在 编码过滤这个类。
@ConditionalOnProperty:是否存在 这样的配置属性。如果不存在则怎么样。上述图的意思是说,如果不存在 server.servlet.encoding 那么就帮你填写上,而且 值 为 enabled。
我操,这一下子 就明白了。有个 专门 接受 配置文件 控制的 属性类。然后 这个 属性类 肯定对 我们的 这个 装配类 有影响。

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


综上所述,可以总结一个小技巧:在我们的配置文件中,其实想要做一个配置。目标是明确的。就是找到想要配置的那个自动配置类。然后 去 那个 类下面 去找一下,我们可以 配哪些东西。可以怎么配,前缀是什么,都能找到。
@SpringBootApplication 注解加载大量的 自动配置类。xxxxAutoConfiguration:自动配置类,可以给IOC容器中 添加 组件(Bean)
xxxxProperties/yaml:配置文件,可以修改 自动配置类中的 相关属性。
如果想要测试那些 配置类生效了,可以用
debug: true

Positive matches:表示生效的配置。

Negative matches: 表示没有生效的配置。