Springboot配置<profiles>标签和application-{profile}.yml文件编写配置注意事项

一、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.csdn.net/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项目的时候想动态配置文件时遇到的问题,查看了一些资料和自己的实际实践进行的总结,相关引用如果有侵权行为,请告知我会尽快删除,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值