首页 > 其他分享 >如何实现根据环境切换不同配置?

如何实现根据环境切换不同配置?

时间:2023-03-31 14:58:18浏览次数:23  
标签:spring 配置 环境 nacos dev 切换 namespace

首发于公众号: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中添加以下配置:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <encoding>UTF-8</encoding>
                <delimiters>
                    <delimiter>@</delimiter>
                </delimiters>
                <useDefaultDelimiters>false</useDefaultDelimiters>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

创建线上环境配置文件:

然后我们再创建一个正式环境的配置文件,命名为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配置:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <profileActive>dev</profileActive>
            <nacosNamespace>dev</nacosNamespace>
            <projectActiveName>order-service</projectActiveName>
            <serverPort>80</serverPort>
        </properties>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <profileActive>test</profileActive>
            <nacosNamespace>test</nacosNamespace>
            <projectActiveName>order-service</projectActiveName>
            <serverPort>80</serverPort>
        </properties>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <profileActive>prod</profileActive>
            <nacosNamespace>prod</nacosNamespace>
            <projectActiveName>order-service</projectActiveName>
            <serverPort>8080</serverPort>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
</profiles>

激活方式

打包时激活配置:

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

idea中激活配置方式:

image

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

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

标签:spring,配置,环境,nacos,dev,切换,namespace
From: https://www.cnblogs.com/ibigboy/p/17276247.html

相关文章

  • 东用科技路由器与H3C Router构建IPSec VPN配置指导手册
    东用科技路由器与H3CRouter构建IPSecVPN配置指导手册一、H3CRouter配置:<H3CRouter>system-view//进入配置模式[H3CRouter]local-useradmin//添加本地用户[H3CRouter-luser-cisco]passwordsimpleadmin//为添加的用户设置密码[H3CRouter-luser-cisco]service-typeweb//开......
  • Swagger配置详解
    Swagger配置详解Swagger一、Swagger简介1.1、前后端发展过程后端时代:前端只管理静态页面html;后端则是主力,会使用模板引擎JSP前后端分离时代:后端负责:后端控制层,服务层,数据访问层前端负责:前端控制层(vue),视图层前端可以伪造后端数据,无需后端,前端页面依旧可以运行前后......
  • 解决docker环境apt-get命令太慢问题
    最近学习doris,准备在本地使用docker搭建一个环境,doris文档提供Dockfile中有这么一段:RUNapt-getupdate&&\apt-getinstall-ydefault-mysql-client&&\apt-getclean&&\mkdir/opt/apache-doris&&\cd/opt&&\mvap......
  • mysql,pg连接重试参数配置
    PostgreSQLJDBCURL连接重试的示例:StringdbUrl="jdbc:postgresql://localhost:5432/mydb?autoReconnect=true&maxReconnects=5&connectTimeout=5000";Connectionconnection=null;try{connection=DriverManager.getConnection(dbUrl,"user......
  • Android NDK开发环境搭建
    必先利其器, 下面介绍下EclipseSDKNDKCygwinCDT 集成开发环境的搭建。1、Android 开发环境搭建Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。1)     下载JDK2)     下载Eclipse3)     下载AndroidSDK4)  ......
  • Windows下Nginx安装与配置教程
    一、前言1、Nginx是什么?Nginx是一个开源的Web服务器,同时Nginx也提供了反向代理和负载均衡的功能。Nginx通常作为负载均衡器暴露在外网接受用户请求,同时也使用其反向代理的功能,将用户的请求转发到实际提供服务的内网服务器。2、Windows什么情况下需要Nginx?通常来说Windows下IIS......
  • Linux系统下NFS服务器的配置(实训)
    实训目的:掌握Linux系统中NFS服务的安装,启动与停止;掌握exports配置文件的操作;掌握用expoets命令测试NFS服务器的方法。实训环境:网络环境中装有CentOS7操作系统的计算机。实训步骤:第1步:NFS规划。1)将本地文件系统的/home/mp3目录共享,mary客户机对该目录具有读写限权,其他所有用......
  • PHP 配置的详细记录
    PHP配置的详细记录一、php配置的目的让PHP的php-fpm(PHPFastCGI管理器)程序能更好地与nginx服务器的进行通信二、进行php配置1.php配置文件位置2.查看是否有php配置文件$cd/usr/local/php8.1/etc --进入文件夹$ls --查看文件夹里的内容php.ini --就是php的配置文......
  • Linux配置免密登陆
    A机器免密登陆B机器[root@ServerA~]#ssh-copy-idServerB/usr/bin/ssh-copy-id:INFO:Sourceofkey(s)tobeinstalled:"/root/.ssh/id_rsa.pub"/usr/bin/ssh-copy-id:INFO:attemptingtologinwiththenewkey(s),tofilteroutanythatarealreadyinsta......
  • odoo 16 安装配置
    一、准备Ubuntu操作系统安装Ubuntu20.044GB内存硬盘300GBIP:10.0.0.81加载光盘映像文件后启动虚拟机语言和键盘保持默认的U.S.English设置IP地址:手动10.0.0.81设置镜像库:http://mirrors.aliyun.com/ubuntu等待系统安装完成后,退出光盘映像文件,然后重启......