标签分类
技术文章
当前位置:主页 > 计算机编程 > java > springboot多环境(dev、test、prod)配置详解

springboot多环境(dev、test、prod)如何配置

  • 发布时间:
  • 作者:码农之家原创
  • 点击:104

springboot多环境(dev、test、prod)配置详解

这篇文章主要知识点是关于springboot,多环境配置,springboot,多环境,springboot,dev、test、prod,springboot多环境(dev、test、prod)配置详解,走进SpringBoot之配置文件与多环境详解 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

一步一步学Spring Boot 2
  • 类型:微服务项目实战大小:72.04 MB格式:PDF出版:清华大学出版社作者:黄文毅
立即下载

我们在开发应用的时候,通常同一套程序会被应用和安装到几个不同的环境中,比如开发、测试、生产等。

其中每个环境的数据库地址、服务器端口等配置都不同。如果在为不同环境打包时都要频繁的修改配置文件,那必将是个非常繁琐的且容易出错的事情。

对于多环境的配置,各种项目构建工具或是架构的基本思路是一样的,通过配置多份不同的环境配置文件,在通过打包命令指定需要打包的内容之后

进行区分打包,spring boot也不列外。或者说实现起来更加简单。

propertiest配置格式

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境

至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。

springboot多环境(dev、test、prod)配置详解

如:spring.profiles.active=dev就会加载application-dev.properties配置文件内容

springboot多环境(dev、test、prod)配置详解

下面,以不同环境配置不同的服务端口为例,进行样例实验。

针对各环境新建不同的配置文件application-dev.properties、application-test.properties、application-prod.properties
在这三个文件均都设置不同的server.port属性,如:dev环境设置为8001,test环境设置为8002,prod环境设置为8003
application.properties中设置spring.profiles.active=dev,就是说默认以dev环境设置

SpringBoot内嵌容器的部署方式:

SpringBoot内部默认提供内嵌的tomcat容器,所以可以直接打成jar包,丢到服务器上的任何一个目录,然后在当前目录下执行以下命令即可运行。

java -jar demo.jar

说明:若这种方式的运行退出进程就结束了;如果想在后台可以运行,则需要执行 java -jar demo.jar > log_demo.file 2>&1 & 即可在后台运行该服务了,log_demo.file是日志文件。如需停止该进程 执行ps -ef|grep java 找到对应的进程 kill 进程ID 即可。

java -jar demo.jar > log_demo.file 2>&1 &

测试不同配置的加载

执行java -jar xxx.jar,可以观察到服务端口被设置为8001,也就是默认的开发环境(dev)
执行java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端口被设置为8002,也就是测试环境的配置(test)
执行java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端口被设置为8003,也就是生产环境的配置(prod)

按照上面的实验,可以如下总结多环境的配置思路:

application.properties中配置通用内容,并设置spring.profiles.active=dev,以开发环境为默认配置

application-{profile}.properties中配置各个环境不同的内容

通过命令行方式去激活不同环境的配置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

走进SpringBoot之配置文件与多环境详解

在第一个Springboot项目中我们知道,SpringBoot项目的默认 配置文件在main/resources下的application.properties下,我们接直接用之前的项目了解一下配置文件。

application.properties配置文件中 配置整个springboot所需的配置,例如端口,项目名称,redis信息,到后续开发springcloud时的注册中心等等的配置信息,当然也可以自己自定义的配置项。

我们打开application.properties,添加配置项:

server.port=8083
name=this is default

然后改写之前的HelloSpringBootController类:

@RestController
public class HelloSpringBootController {
 
	@Value("${name}")
	private String name;
	@RequestMapping("/sayHello")
	public String sayHello() {
		return "Hello ,"+this.name;
	}
}

接着启动项目可以看见:

走进SpringBoot之配置文件与多环境详解

启动了8083 端口

我们访问一下http://127.0.0.1:8083/sayHello,效果如下:

走进SpringBoot之配置文件与多环境详解

访问 成功,配置项正确获取了。

但是在我们正常的开发中会有多个环境,测试环境,开发环境,生产环境,联调环境等等,每个环境下的配置不尽相同,那就需要我们配置多环境的配置文件:

首先在main/resources下 创建以下几个环境配置文件

走进SpringBoot之配置文件与多环境详解 

修改各个配置文件的端口和name值

走进SpringBoot之配置文件与多环境详解 

在application.properties下设置:

spring.profiles.active=prod

 确定当前使用的是哪个环境,这边环境的值与application-prod.properties中-后面的值对应,这是SpringBoot约定好的,

启动项目:

走进SpringBoot之配置文件与多环境详解

会发现启动了application-prod,properties配置下的8082端口,因为我们设置了当前的环境是prod,所以application-prod,properties生效了。

在浏览器中输入http://127.0.0.1:8082/sayHello,效果如下:

走进SpringBoot之配置文件与多环境详解

获取到 了正确的端口和值,可以依次测试各个环境。

基本的多环境配置如上述。

但是在工作项目中我们将一个项目打包之后发布,springboot 项目使用java -jar xxx.jar 来启动项目。那么我们现在打包之后部署在开发环境中,配置文件中应该这样配置

spring.profiles.active=dev

那么如果我们要将项目部署到测试环境中,是不是需要修改一下配置文件,然后重新打包部署呢?显然不是的,当然有更好的办法来解决。

首先我们将 项目打包,当然我们一般会有一些自动打包的脚本,但是这边我就 直接使用cmd打包

打开cmd进入当前项目的目录 

走进SpringBoot之配置文件与多环境详解

运行mvn install (首先确认你已经安装了maven并且配置好环境变量,mvn是可以运行的)

 走进SpringBoot之配置文件与多环境详解

运行成功之后进入target目录会看见,项目已经打包成jar了

走进SpringBoot之配置文件与多环境详解

cmd 继续进入target目录 (jar所在的目录)

运行:

java -jar PropertiesSpringBoot-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

运行jar包,并使用--配置项=值,来设置配置项

走进SpringBoot之配置文件与多环境详解

可以看见启动了测试环境8083 

走进SpringBoot之配置文件与多环境详解

访问正确! 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到详解vue axios封装请求状态、 spring+springmvc+mybatis整合注、 解决axios.interceptors.respon、 等java文章进一步学习,感谢大家的阅读和支持。

上一篇:java对synchronized的优化知识点总结

下一篇:SpringBoot使用统一异常处理实例讲解

展开 +

收起 -

学习笔记
网友NO.285229

SpringBoot系列教程JPA基础环境搭建的步骤

JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernate 基础上封装的一款框架。JPA作为标准,实际上并没有说局限于某个固定的数据源,事实上mysql,mongo, solr都是ok的。接下来我们将介绍下springboot结合jpa 来实现mysql的curd以及更加复杂一点的sql支持 jpa系列教程将包含以下几块 环境搭建 基础的插入、修改、删除数据的使用姿势 基础的单表查询,如(, , = , in, like, between),分页,排序等 多表关联查询 事物使用 本篇为开始第一篇,先搭建一个可以愉快玩耍的jpa项目 I. 环境搭建 我们选择的数据库为mysql,所以有必要先安装一下,这里跳过mysql的安装教程,直接进入springboot项目的搭建 1. pom依赖 我们这里选择的是 2.0.4.RELEASE 版本进行演示 parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.0.4.RELEASE/version relativePath/ !-- lookup parent from update --/parentproperties project.build.sourceEncodingUTF-8/project.build.sourceEncoding project.reporting.outputEncodingUTF-8/project.reporting.outputEncoding spring-cloud.versionFinchley.RELEASE/spring-cloud.version java.version1.8/java.version/propertiesdependencies dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version1.2.45/version /dependency dependency groupIdorg.springfra……

网友NO.784008

springboot打包不同环境配置以及shell脚本部署的方法

前言 本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作; profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_publish.sh启动程序 profiles指定不同环境的配置 通常一套程序分为了很多个部署环境:开发,测试,uat,线上 等,我们要想对这些环境区分配置文件,可以通过两种方式: 通过application.yml中编码指定 profile.active=uat 方式指定 通过mvn中profiles来区分不同环境对应的配置文件夹,人工可以手动在idea勾选生成不同环境的包(推荐) 这里我们要讲的是第二种,首先在mvn中配置如下内容: profiles profile idnode/id properties !--传递给脚本的参数值-- activeProfilenode/activeProfile package-name${scripts_packageName}/package-name boot-main${scripts_bootMain}/boot-main /properties activation activeByDefaulttrue/activeByDefault /activation /profile profile idnode1/id properties activeProfilenode1/activeProfile package-name${scripts_packageName}/package-name boot-main${scripts_bootMain}/boot-main /properties /profile profile idnode2/id properties activeProfilenode2/activeProfile package-name${scripts_packageName}/package-name boot-main${scripts_bootMain}/boot-main /properties /profile /profiles 节点粗解: id:用来指定不同环境配置文件所在的目录,如下我这……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明