最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

【焦点热闻】如何实现根据环境切换不同配置?

来源:博客园

首发于公众号: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中激活配置方式:

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

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

关键词: