如何实现根据环境切换不同配置? 天天新视野

博客园 2023-03-31 15:34:15

首发于公众号:BiggerBoy

前言

在企业开发中,系统的配置信息往往会分不同的环境,如开发环境、测试环境、生产环境。当我们使用nacos作为配置中心时,一定会遇到的问题就是在应用中配置nacos的server-addr时测试环境的nacos地址和线上nacos地址如何区分的问题


(资料图)

拿开发环境和正式环境来说,比如开发环境的nacos地址是nacos.dev.biggerboy.com:8848而正式环境是nacos.biggerboy.com:8848

当在开发环境开发完成准备上线时如何将nacos地址切换为正式环境呢?修改配置文件中server-addr值为nacos.biggerboy.com:8848吗?如果忘了修改呢?

动态激活配置

这里提供一种方法,采用spring-boot多环境配置和maven profile配合完成环境的切换。

创建bootstrap.yml:

server:  #取不同环境下配置的端口  port: @serverPort@#spring配置spring:  profiles:    #取不同环境下配置的激活项    active: @profileActive@  application:#取不同环境下配置的项目名称    name: @projectActiveName@

创建开发环境配置文件:

如下,把需要随环境变化的配置放到当前环境配置文件,比如dev环境,我们创建bootstrap-dev.yml文件:

spring:  cloud:    #注册中心采用nacos    nacos:      #注册中心      discovery:        enabled: true        server-addr: nacos.dev.biggerboy.com:8848        group: dev        # 需要配置完后,使用每个项目自身namespace        namespace: @nacosNamespace@        service: ${spring.application.name}      #配置中心      config:        file-extension: yaml        server-addr: nacos.dev.biggerboy.com:8848        group: dev        prefix: ${spring.application.name}        # 需要配置完后,使用每个项目自身namespace        namespace: @nacosNamespace@

pom文件添加支持

如上通过@取值的方式,如@nacosNamespace@是取pom.xml文件中的配置,我们在下面profile中定义相关配置。通过@获取pom.xml中配置,默认是不支持的,需要在pom.xml中添加以下配置:

                        src/main/resources            true                                    org.apache.maven.plugins            maven-resources-plugin            3.2.0                            UTF-8                                    @                                false                                        org.springframework.boot            spring-boot-maven-plugin            

创建线上环境配置文件:

然后我们再创建一个正式环境的配置文件,命名为bootstrap-prod.yml:

spring:  cloud:    #注册中心采用nacos    nacos:      #注册中心      discovery:        enabled: true        server-addr: nacos.biggerboy.com:8848        group: prod        # 需要配置完后,使用每个项目自身namespace        namespace: @nacosNamespace@        service: ${spring.application.name}      #配置中心      config:        file-extension: yaml        server-addr: nacos.biggerboy.com:8848        group: prod        prefix: ${spring.application.name}        # 需要配置完后,使用每个项目自身namespace        namespace: @nacosNamespace@

profile配置:

pom.xml文件中增加profile配置:

            dev                    dev            dev            order-service            80                            false                        test                    test            test            order-service            80                            false                        prod                    prod            prod            order-service            8080                            true            

激活方式

打包时激活配置:

使用maven打包时,可通过-Pdev指定激活某个配置mvn clean install -Pdev -DskipTests=true

idea中激活配置方式:

这样就能实现不手动修改配置的情况下切换环境了,赶快试试吧~

如果对你有帮助记得点个推荐,分享给你的朋友。

x

热门推荐

如何实现根据环境切换不同配置? 天天新视野

2023-03

工信部开展9项服务 助力中小企业提振信心_世界快消息

2023-03

诡秘之主 爱潜水的乌贼_成仙途爱潜水的乌贼

2023-03

【全球报资讯】最后一成员国同意,土耳其议会批准芬兰加入北约

2023-03

国乒大冷门!奥运冠军再次输球,陈梦1-3败北,钱天一状态爆发 世界视点

2023-03

国内首座双线高速铁路高低塔混合梁斜拉桥——汉巴南铁路嘉陵江特大桥顺利合龙_环球微资讯

2023-03

【榕悦·滨江中】在高品质的服务中寻找养老生活的美学

2023-03

全球热推荐:外线哑火!雄鹿半场三分22投仅3中 命中率仅为13.6%

2023-03

京东拟分拆京东工业、京东产发于港交所主板独立上市 环球快报

2023-03

小米信号放大器说明书_小米信号放大器设置

2023-03

推荐阅读

多家国际邮轮公司实现全面复航 年底恢复至疫情前水平

2022-05

已纳入医保甲类报销范围 “试管婴儿”家庭将获得更多支持

2022-03

内蒙古满洲里市启动第四轮大规模核酸检测

2021-12

微博博主“鹿道森”确认身亡 警方:排除他杀

2021-12

失联摄影师“鹿道森”确认身亡 尸体被打捞上岸

2021-12

黑龙江讷河第二轮全员核检结果皆为阴性

2021-12

2021天象剧场收官:月“会”群星、日全食、流星雨扎堆亮相

2021-12

陕西新增1例境外归国集中隔离期满确诊病例

2021-12

内蒙古新增本土确诊病例91例

2021-12

宁夏银川警方破获2起以“互联网+物流寄递”为模式的特大毒品案件

2021-12