Spring Boot 开发环境、测试环境、预生产环境、生产环境多环境配置

通常一个公司的应程序可能在开发环境(dev)、测试环境(test)、生产环境(prod)中运行。那么是不是需要拷贝不同的安装包,在不同的环境下运行呢,在 Spring Boot 中一切已经为我们准备就绪,只需要简单的配置,你的程序就能在不同的环境中运行。

一、Spring Boot 环境设置机制

spring.profiles.active 属性可以为我们指定当前设置的环境,以此来选择我们的配置文件。例如我们有配置文件

  • application.yml
  • application-dev.yml
  • application-test.yml
  • application-prod.yml

当执行 java -jar xxx.jar --spring.profiles.actvie=test 此时,系统将启用 application.ymlapplication-test.yml 配置文件。

当执行 java -jar xxx.jar --spring.profiles.actvie=prod 此时,系统将启用 application.ymlapplication-prod.yml 配置文件。

正是这种配置参数可以决定我们使用哪种配置文件,如果我们把不同环境的配置写在对应的配置文件中,我们就可以实现多环境机制。

二、配置多环境

正如 第一 点所述,我们配置不同的配置文件

  • application.yml
  • application-dev.yml(开发环境)
  • application-test.yml(测试环境)
  • application-uat.yml(预发布环境)
  • application-prod.yml(生产环境)

三、指定环境

1 在 cmd 命令中指定

java -jar xxx.jar --spring.profiles.actvie=dev

2 在 application.yml 中指定

spring:
profiles:
active: dev

3 在IDEA 编辑器中指定

在运行按钮(绿色三角形按钮)旁边选择 Edit Configurations...,在弹出的对话框中 Active profiles 输入 dev 或其他即可。

这种方法只有在本地调试的时候才生效。

四、程序中获取 applicaton 中的值

@Component
@ConfigurationProperties(prefix = "springstudy")
public class MultienvConfig {
private String demoname; public String getDemoname() {
return demoname;
} public void setDemoname(String demoname) {
this.demoname = demoname;
}
}

五、程序示例

5.1 新建一个工程

  • groupId=com.fishpro
  • artifactId=springstudy
  • 项目名称 spring-boot-study-multienv

5.2 新增以下文件

默认为 application.properties 直接重命名为 application.yml,其他三个新建就可以

  • application.yml
server:
port: 8081
spring:
profiles:
active: dev
  • application-dev.yml(开发环境)
springstudy:
demoname: multienv-dev
  • application-test.yml(测试环境)
springstudy:
demoname: multienv-test
  • application-uat.yml(预发布环境)
springstudy:
demoname: multienv-uat
  • application-prod.yml(生产环境)
springstudy:
demoname: multienv-prod

5.2 新建文件 fishpro.springstudy.MultienvConfig.java

@Component
@ConfigurationProperties(prefix = "springstudy")
public class MultienvConfig {
private String demoname; public String getDemoname() {
return demoname;
} public void setDemoname(String demoname) {
this.demoname = demoname;
}
}

5.3 新建 controller/IndexController.java

@Controller
public class IndexController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
MultienvConfig multienvConfig;
@RequestMapping("/")
String index(){
logger.info(multienvConfig.getDemoname());
return "index";
}
}

5.4 运行 SpringstudyApplication.java

右键 SpringstudyApplication.java 执行 Run SpringstudyApplication

运行程序 http://localhost:8081/ 在控制台中输出

2019-07-08 23:37:05.223  INFO 66267 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-07-08 23:37:05.223 INFO 66267 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2019-07-08 23:37:05.229 INFO 66267 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 6 ms
2019-07-08 23:37:05.252 INFO 66267 --- [nio-8081-exec-1] c.f.s.controller.IndexController : multienv-dev

修改 application.yml 中的配置

server:
port: 8081
spring:
profiles:
active: prod

运行程序 http://localhost:8081/ 在控制台中输出

2019-07-08 23:42:44.906  INFO 66281 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-07-08 23:42:44.910 INFO 66281 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
2019-07-08 23:42:44.930 INFO 66281 --- [nio-8081-exec-1] c.f.s.controller.IndexController : multienv-prod

Spring Boot 多环境如何配置的更多相关文章

  1. SpringCloud入门之Spring Boot多环境配置切换指南

    在 spring boot 中,有两种配置文件,一种是application.properties,另一种是application.yml,两种都可以配置spring boot 项目中的一些变量的定义 ...

  2. vs code 配置spring boot开发环境

    一.环境变量 jdk环境变量一键设置 管理員运行 - 一支小白 - 博客园https://www.cnblogs.com/startnow/p/7416533.html 二.安装插件 1.Java E ...

  3. Spring Boot实践——用外部配置填充Bean属性的几种方法

    引用:https://blog.csdn.net/qq_17586821/article/details/79802320 spring boot允许我们把配置信息外部化.由此,我们就可以在不同的环境 ...

  4. Spring boot+RabbitMQ环境

    Spring boot+RabbitMQ环境 消息队列在目前分布式系统下具备非常重要的地位,如下的场景是比较适合消息队列的: 跨系统的调用,异步性质的调用最佳. 高并发问题,利用队列串行特点. 订阅模 ...

  5. Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置

    用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比 ...

  6. Spring Boot 2.X(十六):应用监控之 Spring Boot Actuator 使用及配置

    Actuator 简介 Actuator 是 Spring Boot 提供的对应用系统的自省和监控功能.通过 Actuator,可以使用数据化的指标去度量应用的运行情况,比如查看服务器的磁盘.内存.C ...

  7. Spring Boot 2.X(十七):应用监控之 Spring Boot Admin 使用及配置

    Admin 简介 Spring Boot Admin 是 Spring Boot 应用程序运行状态监控和管理的后台界面.最新UI使用vue.js重写里. Spring Boot Admin 为已注册的 ...

  8. spring boot 开发环境搭建(Eclipse)

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  9. Spring Boot入门系列(十五)Spring Boot 开发环境热部署

    在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译.然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是影响开发效率.其实Spring Boot的项目碰到这种情况, ...

随机推荐

  1. [Spring cloud 一步步实现广告系统] 17. 根据流量类型查询广告

    广告检索服务 功能介绍 媒体方(手机APP打开的展示广告,走在路上看到的大屏幕广告等等) 请求数据对象实现 从上图我们可以看出,在媒体方向我们的广告检索系统发起请求的时候,请求中会有很多的请求参数信息 ...

  2. ubuntu 输出 log 基础

    自定义日志文件 nohup your_command > my_nohup.log 2>&1 & #(将日志输出在my_nohup.log文件中,并将stderr重定向至s ...

  3. Java并发之内存模型(JMM)浅析

    背景 学习Java并发编程,JMM是绕不过的槛.在Java规范里面指出了JMM是一个比较开拓性的尝试,是一种试图定义一个一致的.跨平台的内存模型.JMM的最初目的,就是为了能够支多线程程序设计的,每个 ...

  4. 关于c++中的复合类型

    目录 数组 字符串 结构体 共用体 枚举 指针 数和指针的关系 常见的存储方式 数组替代品 一.数组 存储在每个元素中值的类型 数组名 数组中的元素数 通用格式:typename arrayname ...

  5. 【翻译】无需安装Python,就可以在.NET里调用Python库

    原文地址:https://henon.wordpress.com/2019/06/05/using-python-libraries-in-net-without-a-python-installat ...

  6. Liunx学习总结(四)--文件的权限管理

    文件和目录的权限 每个文件都有其所有者(u:user).所属组(g:group)和其他人(o:other)对它的操作权限,a:all则同时代表这3者.权限包括读(r:read).写(w:write). ...

  7. 百度地图获取定位,实现拖动marker定位,返回具体的位置名

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. Spring框架的重要问题

    这篇文章总结了一些关于Spring框架的重要问题,这些问题都是你在面试或笔试过程中可能会被问到的. 目录 Spring概述 依赖注入 Spring Beans Spring注解 Spring的对象访问 ...

  9. 业务代码的救星——Java 对象转换框架 MapStruct 妙用

    简介 在业务项目的开发中,我们经常需要将 Java 对象进行转换,比如从将外部微服务得到的对象转换为本域的业务对象 domain object,将 domain object 转为数据持久层的 dat ...

  10. Mac下搭建go和beego开发环境

     go安装 首先到golang的官网下载 直接双击安装包,安装 ,下一步,下一步....完成既可 验证安装是否成功 打开终端执行 输出 go version go1.11.5 darwin/amd64 ...