spring boot 提供

spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties。

profile的配置文件可以按照application.properyies的放置位置一样,放于以下四个位置:

当前项目根目录的 “/config”的子目录下
当前项目根目录下
classpath根目录的“/config”包下
classpath的根目录下

demo演示

定义俩个properties文件,
application-dev.properties和application-prod.properties,
并在俩个文件中都分别

开发环境
server.port=8081
生产环境
server.port=8082


在application.properyies也写上,并把profile切换到application-dev.properties的配置文件

#banner关掉
spring.main.banner-mode=offserver.port=8093
spring.profiles.active=dev

启动SpringbootApplication主程序入口,在控制台下打印出启动tomcat的端口号为配置文件application-dev.properties设置的8081

除了可以用profile的配置文件来分区配置我们的环境变量,在代码里,我们还可以直接用@Profile注解来进行配置,@Profile可以作用于方法或类上。
定义一个User类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String name;private String address;
}

创建ProfilesConfig 类,创建一个id为profilesConfig1的bean,在开发环境下内容为id=1的User对象;在生产环境下内容为id=1的User对象

@Configuration
public class ProfilesConfig {@Bean("profilesConfig1")@Profile("prod")public User getUser1(){return new User(1, "李磊磊1", "北京市");}@Bean("profilesConfig1")@Profile("dev")public User getUser2(){return new User(2, "李磊磊1", "北京市");}
}

application-dev.properties的配置文件

#banner关掉
spring.main.banner-mode=offserver.port=8093
spring.profiles.active=dev

运行SpringbootApplicationTests,打印id为profilesConfig1的bean,控制台显示为测试环境下的profilesConfig1,id=2的user

@SpringBootTest
class SpringbootApplicationTests {@Autowired@Qualifier("profilesConfig1")private User profilesConfig1;@Testvoid contextLoads() {System.out.println(profilesConfig1);}
}

注:

除了spring.profiles.active来激活一个或者多个profile之外,还可以用spring.profiles.include来叠加profile

spring.profiles.include=dev,prod

通过命令行设置

在命令行运行时,连续的两个减号–就是对application.properties中的属性值进行赋值的标识。java -jar xxx.jar --server.port=8888命令,等价于我们在application.properties中添加属性server.port=8888。

通过命令行来修改属性值固然提供了不错的便利性,但是通过命令行就能更改应用运行的参数,那岂不是很不安全?是的,所以Spring Boot也贴心的提供了屏蔽命令行访问属性的设置,只需要这句设置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)。

如果不在application.properties设置spring.profiles.active,也可以在运行jar的时候,使用java -jar xxx.jar --spring.profiles.active=***命令行指定加载配置文件

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

springBoot使用spring.profiles.activ区分生产/开发环境相关推荐

  1. springBoot配置spring.profiles.active多环境

    spring.profiles.active多环境配置 springBoot动态配置多环境(dev/test/prod)数据信息读取 pom文件配置 YAML文件配置 springBoot动态配置多环 ...

  2. Springboot配置文件-spring.profiles.active

    Springboot配置文件-spring.profiles.active 配置文件中spring.profiles.active是区分不同环境的配置文件. 一个springBoot项目生成会经历开发 ...

  3. springboot获取active_springboot 使用spring.profiles.active 区分不同环境下配置文件

    一.新建一个maven 工程 二.在pom.xml文件中加入如下依赖 4.0.0 com.bt.com.cn bt-springboot 0.0.1-SNAPSHOT bt-springboot bt ...

  4. springboot配置spring.profiles.active多环境支持

    server:port: 8081 --- server:port: 8083 spring:profiles: dev 启动类中多了一个div 也可以这样运行

  5. springboot启动spring.profiles.active和spring.profiles.include影响的区别

    application.properties文件内容 spring.profiles.active=test4 pring.profiles.include=test3,test5 version=1 ...

  6. 【WebPack】引入Vue;认识Plugin;使用uglifyjs丑化JS代码;搭建本地服务器;生产开发环境配置文件的抽离

    Vue实战 - 配套源码 npm install --save-dev vue-loader vue-template-compiler 可能会报错如下: 以上报错解决方式:修改版本^13.0.0,然 ...

  7. 从零开始搭建webpack的vue生产/开发环境

    一.初始化项目 在命令行中敲入如下命令: mkdir Webpack-Vue && cd Webpack-Vue && npm init -y 然后你就可以在你的当前路 ...

  8. java ice spring_卩大王叫我来巡山-【Springboot + Ice 系列文章】1.搭建开发环境

    # 一.安装 后续更新使用IDEA安装 其实spring boot官方已经提供了用于开发spring boot的定制版eclipse(STS,Spring Tool Suite)直接下载使用即可,这里 ...

  9. 31 SpringBoot多环境的切换(生产环境、开发环境、测试环境)

    参考链接: Spring官网 Spring官网 外部配置加载顺序的说明 SpringBoot多环境的切换(生产环境.开发环境.测试环境)_周太阳的博客-CSDN博客_springboot测试生产环境切 ...

最新文章

  1. python二维数组初始化
  2. python27安装教程-Python2和Python3安装教程
  3. java编程题有难度的_算法与编程面试题 不喜勿喷 难度指数:*****...
  4. steam怎么看邮箱绑定的账号_怎么为QQ邮箱设置英文邮箱账号
  5. linux 脚本 if else,基于shell的if和else详解
  6. keras从入门到放弃(十二)卷积神经网络
  7. android span的用法,Android Span的使用
  8. 利用Basic authentication 测试不同user的metadata access request
  9. opencv:用最邻近插值和双线性插值法实现上采样(放大图像)与下采样(缩小图像)
  10. freemaker中小数展示为整数的问题
  11. 【差分隐私入门】差分隐私系统学习记录 (一)
  12. 关于“指针数组”和”数组指针“
  13. java 综合练习_Java 之综合练习
  14. 基于jsp+servlet图书管理系统之后台用户信息修改操作
  15. php创建文件目录,及删除目录和文件
  16. Mock-- Server的使用
  17. ORACLE数据库无法执行UPDATE
  18. 大家都是怎么写论文的
  19. ieeetran_IEEEtran BibTex样式
  20. 织梦dedecms建站流程

热门文章

  1. python 知识大全_Python基础知识汇总
  2. 从两则新闻看苏宁易购的架构设计
  3. The import xxx cannot be resolved
  4. 光模块SFP+与SFP、XFP、QSFP、QSFP+的区别
  5. Java校招极大几率出的面试题(含答案)----汇总
  6. git 分支合并冲突解决
  7. 真正的赚钱机会来了,你还不懂区块链?
  8. zstd - 一种由Facebook使用的快速数据压缩算法
  9. 百望云服务器显示二个,百望云-文档中心
  10. mysql中的gcache.page文件_高可用MySQL数据库之PXC集群