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 命令中指定

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

2 在 application.yml 中指定

  1. spring:
  2. profiles:
  3. active: dev

3 在IDEA 编辑器中指定

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

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

四、程序中获取 applicaton 中的值

  1. @Component
  2. @ConfigurationProperties(prefix = "springstudy")
  3. public class MultienvConfig {
  4. private String demoname;
  5. public String getDemoname() {
  6. return demoname;
  7. }
  8. public void setDemoname(String demoname) {
  9. this.demoname = demoname;
  10. }
  11. }

五、程序示例

5.1 新建一个工程

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

5.2 新增以下文件

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

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

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

  1. @Component
  2. @ConfigurationProperties(prefix = "springstudy")
  3. public class MultienvConfig {
  4. private String demoname;
  5. public String getDemoname() {
  6. return demoname;
  7. }
  8. public void setDemoname(String demoname) {
  9. this.demoname = demoname;
  10. }
  11. }

5.3 新建 controller/IndexController.java

  1. @Controller
  2. public class IndexController {
  3. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  4. @Autowired
  5. MultienvConfig multienvConfig;
  6. @RequestMapping("/")
  7. String index(){
  8. logger.info(multienvConfig.getDemoname());
  9. return "index";
  10. }
  11. }

5.4 运行 SpringstudyApplication.java

右键 SpringstudyApplication.java 执行 Run SpringstudyApplication

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

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

修改 application.yml 中的配置

  1. server:
  2. port: 8081
  3. spring:
  4. profiles:
  5. active: prod

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

  1. 2019-07-08 23:42:44.906 INFO 66281 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
  2. 2019-07-08 23:42:44.910 INFO 66281 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
  3. 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. 三层架构(MVC)实现简单登陆注册验证(含验证码)

    前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯servlet方式,因为当时刚接触到servlet,正好网上没有这方面的全面讲解,所以我就发飙了.不过在现实生产中我们大多采用的三层架构. ...

  2. 洛谷 P1120 小木棍

    题意简述 给出n个数,求最小的l,使n个数可分成若干组,每组和都为l. 题解思路 暴力搜索+剪枝 代码 #include <cstdio> #include <cstdlib> ...

  3. 身体质量指数BMI

    Solution: 方法一:"Python语言程序设计"(中国大学MOOC平台)的答案 分析:对比两种指标,将共性(相同的区间)和异性(不同的区间)细分.这样两种指标的判断条件(不 ...

  4. centos7 环境下安装nginx--Linux

    一.安装前需要的编译环境准备 1.安装make yum install -y gcc automake autoconf libtool make 2.安装gcc.gcc-c++ yum instal ...

  5. .net测试篇之单元测试/集成测试神器Autofixture

    autofixture简介 有了单元测试框架加上Moq(后面我们会用单独章节来介绍moq),可以说测试问题基上都能搞定了.然而有了AutoFixture对单元测试来说可以说是如虎添翼,AutoFixt ...

  6. [FJOI2015]火星商店问题(线段树分治,可持久化,Trie树)

    [FJOI2015]火星商店问题 前天考了到线段树分治模板题,全场都切了,就我不会QAQ 于是切题无数的Tyher巨巨就告诉我:"你可以去看看火星商店问题,看了你就会了." 第一道 ...

  7. RocketMQ 4.3.2 standalone Installation and Configuration

    1 Download RockeMQ Package: You need to download it and put it to the OS Image. wget http://apache.c ...

  8. Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)

    一.背景 在我上一篇文章<Spring Cloud开发人员如何解决服务冲突和实例乱窜?>中提到使用服务的元数据来实现隔离和路由,有朋友问到能不能直接通过IP来实现?本文就和大家一起来讨论一 ...

  9. 运行git提示xcrun: error: invalid active developer path错误

    运行git提示xcrun: error: invalid active developer path错误 是xcode的原因 运行如下命令解决: xcode-select --install

  10. WebApi使用OAuth2认证

    本篇文章实现了四种认证方式中的客户端模式和密码模式,未实现token持久化 未介绍OAuth2的相关概念,全部是干货,可自己在网上搜索OAuth2相关知识,在这不做过多阐述 一.引用OAuth2所需的 ...