spring boot:基于profile的多环境配置(spring boot 2.3.4)
一,为什么要进行多环境配置?
1,没有人会在生产环境中进行开发和测试,
所以通常会有多个环境的划分:
工程师本地的开发环境
进行测试的测试环境
最终上线的生产环境
每个环境对应不同的数据库/缓存等数据源和不同的接口
如果每次部署应用时都需要修改配置文件则会很不方便,
我们通过设置切换profile,可以使应用在不同的环境中调用相应的配置文件工作
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,演示项目的相关信息
1,项目地址:
https://github.com/liuhongdi/profile
2,功能说明:
演示了通过切换profile读取配置文件的属性
3,项目结构;如图:

三,配置文件说明
1,pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2,application.properties
custom.orig="application.properties"
custom.active="application.properties"
spring.profiles.active=dev
说明:spring.profiles.active用来指定默认使用的一个配置文件
3,application-prd.properties
custom.active="application-prd.properties"
4,application-dev.properties
custom.active="application-dev.properties"
四,java代码说明
1,HomeController.java
@Controller
@RequestMapping("/home")
public class HomeController { //读取变量custom.orig
@Value("${custom.orig}")
private String origstr; //读取变量custom.active
@Value("${custom.active}")
private String activestr; //打印从配置文件中读取到的变量值
@GetMapping("/home")
@ResponseBody
public String home() {
return "this is home/home page<br/> active:"+activestr+"<br/> orig:"+origstr;
}
}
五,测试效果:
1,打包:

先执行clean
然后执行:package
2,测试执行:
从控制台执行:
[root@localhost profile]# java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prd
然后访问页面:
http://127.0.0.1:8080/home/home
返回:
this is home/home page
active:"application-prd.properties"
orig:"application.properties"
可以看到当前application.properties和application-prd.properties都生效,
而两者中均存在的同名的变量生效的是application-prd.properties
3,修改profile为dev:
[root@localhost profile]# java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
返回:
this is home/home page
active:"application-dev.properties"
orig:"application.properties"
这次是application-dev生效
4,测试不指定profile
[root@localhost profile]# java -jar target/demo-0.0.1-SNAPSHOT.jar
返回:
this is home/home page
active:"application-dev.properties"
orig:"application.properties"
说明spring.profiles.active=dev指定默认的配置文件已生效
六,查看spring boot版本
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.4.RELEASE)
spring boot:基于profile的多环境配置(spring boot 2.3.4)的更多相关文章
- 分布式事务、多数据源、分库分表中间件之spring boot基于Atomikos+XADataSource分布式事务配置(100%纯动态)
本文描述spring boot基于Atomikos+DruidXADataSource分布式事务配置(100%纯动态),也就是增加.减少数据源只需要修改application.properties文件 ...
- 51. spring boot属性文件之多环境配置【从零开始学Spring Boot】
原本这个章节是要介绍<log4j多环境不同日志级别的控制的>但是没有这篇文章做基础的话,学习起来还是有点难度的,所以我们先一起了解下spring boot属性文件之多环境配置,当然文章中也 ...
- Spring Boot 2.4 对多环境配置的支持更改
在目前最新的Spring Boot 2.4版本中,对配置的加载机制做了较大的调整.相关的问题最近也被问的比较多,所以今天就花点时间,给大家讲讲Spring Boot 2.4的多环境配置较之前版本有哪些 ...
- spring程序打包war,直接通过-jar启动,并指定spring.profiles.active参数控制多环境配置
备注:spring boot有内嵌tomcat,jar项目可以用java -jar命令启动,war包也可以,且可以直接指定spring.profiles.active参数控制多环境配置 直接指定传参, ...
- 4.Profile(多环境配置)
在实际的项目开发中,一个项目通常会存在多个环境,例如,开发环境.测试环境和生产环境等.不同环境的配置也不尽相同,例如开发环境使用的是开发数据库,测试环境使用的是测试数据库,而生产环境使用的是线上的正式 ...
- maven 利用 profile 进行多环境配置
我们在进行项目的多环境配置时,有很多种方式供我们选择,比如 SpringBoot 自带的 application-dev.yml.maven 的 profile 等.这里介绍的就是如何利用 profi ...
- Spring Boot 使用properties如何多环境配置
当我们使用properties文件作为Spring Boot的配置文件而不是yaml文件时,怎样实现多环境使用不同的配置信息呢? 在Spring Boot中,多环境配置的文件名需要满足 ...
- maven profile实现多环境配置
每次项目部署上线都需要手动去修改配置文件(比如数据库配置,或者一个自定义的配置)然后才能打包,很麻烦,网上找到 maven profile可以完成这个工作,记录如下: 环境:eclipse + spr ...
- Maven之profile实现多环境配置动态切换
一般的软件项目,在开发.测试及生产等环境下配置文件中参数是不同的.传统的做法是在项目部署的时候,手动修改或者替换这个配置文件.这样太麻烦了,我们可以用Maven的profile来解决这 ...
随机推荐
- numpy函数笔记(持续更新)
numpy函数笔记 np.isin用法 np.isin(a,b) 用于判定a中的元素在b中是否出现过,如果出现过返回True,否则返回False,最终结果为一个形状和a一模一样的数组.(注意:这里的a ...
- pytest文档4-Allure报告清除上一次数据
前言 大家在执行过几次Allure之后就会发现,Allure的报告会把历史的执行结果都展示出来,但实际工作中我们可能只关心本次的结果,解决的话就需要修改一下执行命令了. 问题: 例如图中显示的第一条其 ...
- NoSuchMethodError: org.springframework.beans.factory.config.BeanDefinition.getResolvableType
spring整合Mybatis报错: 解决方法: 检查maven依赖中的spring-jdbc和spring-webmvc是否版本一致 以下均为5.2.0.RELEASE版本 除此之外再检查是否有其他 ...
- java虚拟机小贴士之GC分析
打印日志 通过加入 -XX:+PrintGCDetails 参数则可以打印详细GC信息至控制台.参数-verbose:gc也是可以,但不够详细.通过加入-XX:+PrintGCDateStamps则可 ...
- Module build failed: TypeError: this.getResolve is not a function at Object.loader 使用vue-cli 创建项目 使用sass时报错 -- 等其他sass 报错 ./node_modules/css-loader?{"sourceMap":true}!./node_modules/vue-loader/lib
已经安装了 sass相关依赖包 npm install sass-loader --save-devnpm install node-sass --sava-dev 并且在build文件下webpa ...
- TensorFlow之张量
张量的概念 TensorFlow中的Tensor就是张量,张量是数学对象,是对标量.向量.矩阵的泛化.我们可以直接理解成张量就是列表,就是多维数组. 张量的维数用阶来表示: 0阶张量 标量 单个值 例 ...
- php第三天-数组的定义,数组的遍历,常规数组的操作
0x01 数组分类 在php中有两种数组:索引数组和关联数组 索引数组的索引值是整数,以0开始.当通过位置来标识东西时用索引数组. 关联数组是以字符串作为索引值,关联数组更像操作表.索引值为列名,用于 ...
- AOP参数校验
1.切面依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- Centos-创建目录-mkdir
mkdir 创建目录 相关选项 -m 对新建目录设置存取权限,数字表现形式 -p 递归创建目录
- Centos-帮助信息-man help
man help 获取指定命令帮助信息 man cmd 获取命令详细帮帮文档 cmd --help 获取简洁命令详情