Spring Boot实现多环境配置

1.为什么需要多环境配置?

在实际项目开发过程中,我们往往需要区分开发,测试,联调,预发布,生产等不同的应用环境。这些应用环境用途不同,对应环境的配置项,稳定性,数据质量,保障性,可接触人群等要求也不同,比如 Swagger 一般上在生产时是关闭的;不同环境数据库地址,端口号等都是不尽相同的。要是没有多环境的自由切换,部署起来是很繁琐也容易出错的。 使用多环境配置,可以针对不同的应用环境,提前配置好对应的环境配置信息。在使用时,仅需要修改具体的环境名称,就可以把对应环境配置信息,系统参数等相关内容全部切换。不仅使用便捷,还极大地降低了手工修改参数的出错率。

2.代码工程

实验目标

实现不同环境配置和切换

pom.xml

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot-demo</artifactId>
        <groupId>com.et</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>MultiProfiles</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>
</project>

controller

读取不同环境里面的name的值

java 复制代码
package com.et.profile.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
public class HelloWorldController {
    @Value("${profile.name}")
    private String name;
    @RequestMapping("/hello")
    public Map<String, Object> showHelloWorld(){
        Map<String, Object> map = new HashMap<>();
        map.put("msg", "HelloWorld");
        map.put("name", name);
        return map;
    }
}

配置文件

application.yml, 默认加载dev配置文件

cpp 复制代码
server:
  port: 8088

profile:
  name: dev

application-dev.yml

cs 复制代码
server:
  port: 8088

profile:
  name: dev

application-prod.yml

cpp 复制代码
server:
  port: 8088

profile:
  name: prod

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

3.测试

启动Spring Boot 应用程序

测试不同环境变量值

4.引用

相关推荐
蓝澈112118 分钟前
迪杰斯特拉算法之解决单源最短路径问题
java·数据结构
Kali_0725 分钟前
使用 Mathematical_Expression 从零开始实现数学题目的作答小游戏【可复制代码】
java·人工智能·免费
rzl0237 分钟前
java web5(黑马)
java·开发语言·前端
君爱学习43 分钟前
RocketMQ延迟消息是如何实现的?
后端
guojl1 小时前
深度解读jdk8 HashMap设计与源码
java
Falling421 小时前
使用 CNB 构建并部署maven项目
后端
guojl1 小时前
深度解读jdk8 ConcurrentHashMap设计与源码
java
程序员小假1 小时前
我们来讲一讲 ConcurrentHashMap
后端
爱上语文1 小时前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端