Spring Boot 多环境如何配置
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.yml
和 application-test.yml
配置文件。
当执行 java -jar xxx.jar --spring.profiles.actvie=prod 此时,系统将启用 application.yml
和 application-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 多环境如何配置的更多相关文章
- SpringCloud入门之Spring Boot多环境配置切换指南
在 spring boot 中,有两种配置文件,一种是application.properties,另一种是application.yml,两种都可以配置spring boot 项目中的一些变量的定义 ...
- vs code 配置spring boot开发环境
一.环境变量 jdk环境变量一键设置 管理員运行 - 一支小白 - 博客园https://www.cnblogs.com/startnow/p/7416533.html 二.安装插件 1.Java E ...
- Spring Boot实践——用外部配置填充Bean属性的几种方法
引用:https://blog.csdn.net/qq_17586821/article/details/79802320 spring boot允许我们把配置信息外部化.由此,我们就可以在不同的环境 ...
- Spring boot+RabbitMQ环境
Spring boot+RabbitMQ环境 消息队列在目前分布式系统下具备非常重要的地位,如下的场景是比较适合消息队列的: 跨系统的调用,异步性质的调用最佳. 高并发问题,利用队列串行特点. 订阅模 ...
- Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比 ...
- Spring Boot 2.X(十六):应用监控之 Spring Boot Actuator 使用及配置
Actuator 简介 Actuator 是 Spring Boot 提供的对应用系统的自省和监控功能.通过 Actuator,可以使用数据化的指标去度量应用的运行情况,比如查看服务器的磁盘.内存.C ...
- Spring Boot 2.X(十七):应用监控之 Spring Boot Admin 使用及配置
Admin 简介 Spring Boot Admin 是 Spring Boot 应用程序运行状态监控和管理的后台界面.最新UI使用vue.js重写里. Spring Boot Admin 为已注册的 ...
- spring boot 开发环境搭建(Eclipse)
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- Spring Boot入门系列(十五)Spring Boot 开发环境热部署
在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译.然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是影响开发效率.其实Spring Boot的项目碰到这种情况, ...
随机推荐
- 通俗易懂--循环神经网络(RNN)的网络结构!(TensorFlow实现)
1. 什么是RNN 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环 ...
- Java学习|String,StringBuffer,StringBuilder?
1 String (1) String的创建机理 由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池.其运行机制是:创建一个字 ...
- 探究光线追踪技术及UE4的实现
目录 一.光线追踪概述 1.1 光线追踪是什么 1.2 光线追踪的特点 1.3 光线追踪的历史 1.4 光线追踪的应用 二.光线追踪的原理 2.1 光线追踪的物理原理 2.2 光线追踪算法 2.3 R ...
- java后端开发面经 数据库相关
小姐姐:怎么理解感情中的付出和回报? 你答:有这样一个故事,讲的是一个小男孩和一个小女孩,这个小男孩呢,用很多好玩石头,而这个小女孩呢,有好多好吃的糖果,有一天,他们相互约定:小男孩用所有的石头交互小 ...
- win10文件备份、文件同步方案
用个人版onedrive同步重要数据,数据安全有保障,但免费版只有15G空间,需要合理分配.(201907与别人合租家庭版,空间1T充足) google-drive可以同步指定的文件夹,但空间也只有1 ...
- vscode 支持 threejs 的智能提示
VSCode Typings and Intellisense: Dummy Learning VS-Code 1 Jun 20, 2016 Updated on Jun 20 2016 for 1. ...
- Spring Cloud Zuul的动态路由怎样做?集成Nacos实现很简单
一.说明 网关的核心概念就是路由配置和路由规则,而作为所有请求流量的入口,在实际生产环境中为了保证高可靠和高可用,是尽量要避免重启的,所以实现动态路由是非常有必要的:本文主要介绍实现的思路,并且以Na ...
- ubuntu 用户无法/循环登陆的问题
安装oracle数据库的时候需要新建用户oracle,使用的命令为:useradd oracle.这样做直接创建了用户oracle,但并没有在home目录下创建oracle用户的文件.在log out ...
- ZAO 换脸不安全?用 python 轻松实现 AI
最近两天一款名为 「ZAO」 的 App 刷爆了朋友圈,它的主打功能是 AI 换脸,宣称「只需一张照片,就能出演天下好戏」 : 现实中不能实现当明星的梦,在这个 App 里你可以,想演谁演谁.新鲜.好 ...
- Oracle - Tables
创建表 a: Sql语句创建 -- Create table create table Table_Name ( 字段1 VARCHAR2(50), 字段2 VARCHAR2(50) not null ...