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. 通过注解实现通用导出Excel

    Javaweb开发中数据的导入导出很常见,每次我们都需要写很多代码,所以我就在想能不能写一些通用的方法,之前已经在网上 整理过一些通用的方法,最近在网上看到一位牛人封装的更加简介,自己拿过来整理了一下 ...

  2. 记一次解决tomcat自动关闭的bug

    最近一个运行了4年的javaee web项目,经常接到客户反馈系统无法打开.登录服务器查看服务,发现是tomcat自动关闭了.基本是3到4天发生一次. 运维人员开始以为是其他服务杀死了tomcat服务 ...

  3. C# 复制Excel单元格格式

    本文将介绍通过C# 复制Excel单元格格式的方法,包括复制单元格中的字体.字号.字体加粗.倾斜.单元格背景色.字体颜色.单元格数字格式.单元格文字方向.文字旋转.下划线.单元格对齐方式.单元格边框等 ...

  4. 2019heox博客部署到coding该绕的坑-奥怪的小栈

    文章转载于:2019heox博客部署到coding该绕的坑-奥怪的小栈 这篇文章适用于初次部署和部署到github后想双线部署到coding的朋友们,我将带你们绕过一些我踏过的坑. 前言 我一开始没打 ...

  5. Filter(过滤器)(有待补充)

    Filter(过滤器) 一.Filter(过滤器)简介 Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的 ...

  6. [目录] ASP.Net Core 搭建微服务网站

    本项目采用ASP.Net Core微服务技术,搭建博客和Saas平台. 全文将围绕(1)设计模式  (2)敏捷开发 目的: 结构足够合理,代码足够优美,扩展性.可读性.易维护性做到最优. 以下目录仅为 ...

  7. vscode同步插件 sync(gist,token)

    网上很多同步教程,按照教程操作upload时一直报错:sync:invalid gist ID 查找问题很久才知道 gist和token是两个东西.下面重新梳理下: 一.下载安装插件 Setting ...

  8. 【Appium】Appium+Python环境搭建

    环境准备: 1.jdk 2.android-sdk 3.python 4.Node.js 5.appium 6.Appium-Python-Client 1. 下载jdk1.7:http://www. ...

  9. P2564 [SCOI2009]生日礼物 贪心

    https://www.luogu.org/problemnew/show/P2564) 题意 有n个珠子,包括k中颜色,找出长度最小的一个区间,使得这个区间中包含所有的颜色. 思路 把n个珠子按照位 ...

  10. codeforce617E-XOR and Favorite Number莫队+异或前缀和

    传送门:http://codeforces.com/contest/617/problem/E 参考:https://blog.csdn.net/keyboarderqq/article/detail ...