一、springboot配置介绍
1、使用此标签的目的
为了区分配置文件的不同环境,我们在开发的过程中会遇到测试环境、预发环境和生产环境,如果频繁的改动配置文件代码或名称容易发生不必要的错误,所以通过配置标签来实现简易的动态配置,只需改动spring.profiles.active的key值对应的value(test,pre or product)即可实现对应配置文件的切换。
2、具体配置步骤:
(1)pom文件配置:
<profiles>
<profile>
<id>product</id>
<properties>
<env>product</env>
</properties>
</profile>
<profile>
<id>pre</id>
<properties>
<env>pre</env>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
</profiles>
(2)配置properties、xml、yml或yaml任何一种格式的文件
我采用的是yml文件,Springboot默认会加载application.yml文件,具体启动规则可以参考:https://blog.youkuaiyun.com/chengkui1990/article/details/79866499
根据启动的规则我们可以在application.yml中配置具体访问哪个配置文件
写法如下:
通过上图的配置就可以找到对应的application-{profiile}.yml文件,我们也可以怎么写
@env@是获取maven控制管理配置的值,如下图
我们只要切换maven中的profiles对选框,就可以实现配置文件的切换
**注意:**我在实际开发的过程中发现如果是多模块项目配置在某个模块下可能会不生效,后切换至maven多模块的跟目录就生效了,具体原因未知。spring.profiles.active的值在测试环境可以用变量’@env@'的形式,通过maven模块动态设置,但是到了生产环境必须写死-product或online。
二、启动Springboot的时候,遇到yml配置的问题
上面文件存在两个问题:
第一个问题:yml文件配置的时候不能用JSON,会造成不能正常加载配置不能识别${redis.conf.engine}中的redis.conf.engine异常
第二个问题:在写key值时可以不用怎么多层级,可以用redis.conf:的方式,减少层级,编译查看,写法如下:
yml文件格式相关的小介绍:https://www.jianshu.com/p/a8252bf2a63d
以上是自己在搭建Springboot项目的时候想动态配置文件时遇到的问题,查看了一些资料和自己的实际实践进行的总结,相关引用如果有侵权行为,请告知我会尽快删除,谢谢!