目录

  • 1. 前言
  • 2. 配置文件的优先级
  • 3. 引用外部的配置文件
  • 4. 配置多环境的配置文件
    • 4.1. 在配置文件中配置多环境
    • 4.2. 在代码中配置多环境
    • 4.3. 在项目启动时配置多环境

1. 前言

在我们的 SpringBoot 项目中,通常会有一个 application.ymlapplication.properties 的文件,这是整个 SpringBoot 项目的核心配置文件,通常文件中包含着端口、程序名、数据源等重要信息的配置

2. 配置文件的优先级

SpringBoot 项目中的 application.ymlapplication.properties 配置文件一共可以出现在如下 4 个位置

  1. 项目根目录下的 config 文件夹中
  2. 项目根目录下
  3. classpath 下的 config 文件夹中
  4. classpath

这四个位置的加载优先级依次为 1 > 2 > 3 > 4,如果这 4 个位置中都有 application.ymlapplication.properties 文件,那么加载的优先级从 14 依次降低。SpringBoot 将按照这个优先级查找配置信息,并加载到 Spring 环境中

3. 引用外部的配置文件

默认情况下 SpringBoot 查找 application.ymlapplication.properties 并加载。如果开发者不想使用其作为配置文件名,也可以自己定义。在打包启动时指定文件的路径或名称

  • 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定文件名
java -jar xxx.jar --spring.config.name=filename
  • 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定外部配置文件的位置
java -jar xxx.jar --spring.config.location=classpath:/app.properties
  • 当然我们也可以指定外部配置所在的文件夹,启动时会搜索并使用该文件夹下的配置文件
java -jar xxx.jar --spring.config.location=classpath:/config/
  • 我们还可以同时配置多个路径,比如下面样例先加载外部配置文件,如果不存在外部配置文件的话则使用包内默认的配置文件
java -jar xxx.jar --spring.config.location=classpath:/,classpath:/config/

4. 配置多环境的配置文件

开发者在项目发布之前,一般需要频繁地在开发环境、测试环境以及生产环境之间进行切换,这个时候大量的配置需要频繁更改(如:数据库、redis、mongodb,MQ 等配置)。频繁修改带来了巨大的工作量,SpringBoot 中约定的不同环境下配置文件名称规则为

# profile:占位符表示当前环境的名称
application-{profile}.properties

4.1. 在配置文件中配置多环境

application.properties 中进行如下配置,则表示加载 application-dev.properties 文件

spring.profiles.active=dev

application.properties 中进行如下配置,则表示加载 application-prod.properties 文件

spring.profiles.active=prod

4.2. 在代码中配置多环境

在启动类的 main 方法上添加如下代码

@SpringBootApplication
public class Springdemo3Application {public static void main(String[] args) {SpringApplicationBuilder builder = new SpringApplicationBuilder(Springdemo3Application.class);builder.application().setAdditionalProfiles("dev");builder.run(args);}
}

4.3. 在项目启动时配置多环境

我们也可以在项目打包成 jar 包后启动时,在命令行中动态指定当前环境

java -jar xxx.jar --spring.profiles.active=dev

SpringBoot中配置多环境的配置文件相关推荐

  1. uni-app cli创建项目打包并配置多环境读取配置文件信息

    uni-app cli创建配置多环境读取配置文件信息 在项目src下创建以下配置文件 在package.json中添加以下代码 VUE_APP_ENV:用来区分环境 NODE_ENV:用来定死打包目录 ...

  2. IDEA 中配置GIT环境

    第五章 IDEA 中配置GIT环境 文章目录 第五章 IDEA 中配置GIT环境 前言 一.配置GIT忽略文件 二.IDEA中配置GIT 三.在项目中配置GIT 四.开始使用在IDEA中GIT 五.I ...

  3. springboot中配置了拦截器后,拦截器无效的解决方案之一

    springboot中配置了拦截器后,拦截器无效的解决方案之一 参考文章: (1)springboot中配置了拦截器后,拦截器无效的解决方案之一 (2)https://www.cnblogs.com/ ...

  4. webstorm配置环境变量_webstorm中配置nodejs环境及npm步骤详细解说

    这次给大家带来webstorm中配置nodejs环境及npm步骤详解,webstorm中配置nodejs环境及npm的注意事项有哪些,下面就是实战案例,一起来看一下. --nodejs安装及环境配置 ...

  5. Ubuntu中配置Java环境变量时,出现command not found问题解决记录

    百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile, ...

  6. 【图文讲解】eclipse中配置maven环境+导入maven项目

    1.检测eclipse是否有maven环境 打开import对话窗输入maven,如果下面红色方框里有东西可以跳过下一步的elipse中配置maven环境,如果方框里没有东西,按照下一步在eclips ...

  7. SpringBoot中配置为开发模式,代码修改后不用重新运行

    场景 SpringBoot中配置为开发模式,修改代码后不用重新运行. 实现 打开pom.xml,添加依赖 <!-- 添加如下依赖,配置为开发模式,代码做了修改,不用重新运行--><! ...

  8. 如何在VS和CB中配置MySQL环境

    这里,由于我的MySQL安装在D盘 MY SQL\MySQL Server 5.6该路径下,所以后面的路径均以D:\MY SQL\MySQL Server 5.6开头 在VS中配置MySQL环境 包含 ...

  9. Eclipse中配置CORBA环境

    Eclipse中配置CORBA环境 1.下载openORB项目包和ORBStudio772项目包:http://yunpan.cn/QirGePvNijbGI (提取码:ea9b) 2.解压上面的压缩 ...

  10. SpringBoot中配置拦截器时,跨域失效

    SpringBoot中配置拦截器时,跨域失效 前后段分离的项目,配置了跨域后,访问正常,但是配置了拦截器以后,有的访问正常,有的出现跨域问题,发现出现跨域问题的都是拦截器里面没有放行的请求. @Con ...

最新文章

  1. java: web应用中不经意的内存泄露
  2. 吴志强院士:CIM与城市未来
  3. pytorch 损失函数总结
  4. 常用模块(数据序列化 json、pickle、shelve)
  5. [Qt教程] 第25篇 数据库(五)SQL表格模型QSqlTableModel
  6. cmd不能用的解决方法
  7. mallco动态分配_malloc动态分配的内存的生存周期是多少?
  8. 【转】wpf从我炫系列2----布局控件的使用(下)
  9. 虽说下班时间自己说了算
  10. 机器学习基础(四)——持久化分类器
  11. PAT—1082 射击比赛(20)
  12. 推荐系统-Task05推荐系统流程构建
  13. 2017.8.12在线笔试编程真题总结
  14. 传世调试之-道士技能《解毒术》、《神光术》:无法正常升级。
  15. C++Builder:定时器Timer控件
  16. C++类型转换以及文件读写的总结
  17. Node-RED使用指南:7:配置与设定总结:其他配置
  18. 专访王豫翔:编程道路上的“三少三多”
  19. 如何在Windows 10上控制多个显示器的功能
  20. session有效时间问题

热门文章

  1. MLOps- 吴恩达Andrew Ng Selecting and Training a Model Week2 论文等资料汇总
  2. 算法:翻转链表 Reverse Linked List 三种方法实现,迭代解决人类思维,递归解决机器思维 reverse node
  3. 图片不能有透明通道AppStore images can't contain alpha channels or transparencies windows iOS
  4. java的css的块_CSS基础知识(概念、块级元素、行内元素、选择器)
  5. java 6 基础_java基础(6)
  6. Centos Python安装graphviz和pydotplus
  7. 基于udp的协议netty课设题目_Netty UDP示例
  8. 《how to write and publish a scientific paper》 Chapter 4
  9. 在VMware安装Ubuntu后一直停留在VMware Easy Install
  10. MongoDB 在windows shell环境下的基本操作和命令的使用示例(二)