SpringBoot系列之外部配置用法简介

引用Springboot官方文档的说法,官方文档总共列举了如下用法:

1、Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).

2、@TestPropertySource annotations on your tests.

3、properties attribute on your tests. Available on @SpringBootTest and the test annotations for testing a particular slice of your application.

4、Command line arguments.

5、Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property).

6、ServletConfig init parameters.

7、ServletContext init parameters.

8、JNDI attributes from java:comp/env.

9、Java System properties (System.getProperties()).

10、OS environment variables.

11、A RandomValuePropertySource that has properties only in random.*.

12、Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants).

13、Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants).

14、Application properties outside of your packaged jar (application.properties and YAML variants).

15、Application properties packaged inside your jar (application.properties and YAML variants).

16、@PropertySource annotations on your @Configuration classes.

17、Default properties (specified by setting SpringApplication.setDefaultProperties).

Springboot官方文档应经将这种用法做了比较详细的描述:Springboot外部配置用法官方文档,所以本博客只简单介绍一下比较常用的

尚硅谷有位老师对这些用法进行梳理,整理出比较常用的几种用法:

这种外部配置的优先级按照从高到低的顺序排序如下图所示,优先级高的属性配置会覆盖优先级低的配置,而且存在互补配置的特性,对于这些特性可以参考我上篇博客:SpringBoot系列之配置文件加载位置

注意:

  • 命令行配置的方式

    比如java -jar这种方式,多个属性之间用空格分开,properties里的属性基本都能用,用法是属性项=属性值这种方法,举个例子:
java -jar springboot-properties-config-0.0.1-SNAPSHOT.jar --server.port=8082 --server.context-path=/example



如果都通过命令行这种方法,一个属性一个属性的加,显然不太可行,所以可以在jar包所在的文件夹下面加个application.properties/application.yml,然后再通过命令启动,就可以自动加载配置文件里的配置

  • application.properties或者application.yml

    对于application.properties或者application.yml配置文件可以对其进行归类,可以分为jar包外部的和内部的,也可以分为带${profile}的和不带${profile}的,profile的可以参考我上篇博客:Springboot系列之profile多环境配置用法简介

一般来说jar外部的配置优先级一般是高于jar包内部的的,profile的配置文件优先级也是高于不到profile的application.proerties/application.yml配置文件的,所以针对配置文件加载顺序优先级进行排序

jar外部配置文件被加载的优先级高于jar内部的,${profile}的配置文件被加载优先级高于没带${profile}的配置文件

  • jar包外部的application-${profile}.properties或者application-${profile}.yml
  • jar包内部的application-${profile}.properties或者application-${profile}.yml
  • jar包外部的application.properties或者application.yml
  • jar包内部的application.properties或者application.yml

SpringBoot系列之外部配置用法简介的更多相关文章

  1. SpringBoot系列之@Conditional注解用法简介

    SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...

  2. SpringBoot系列之YAML配置用法

    1.全局配置 SpringBoot的全局配置文件有两种: application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值,主要是 ...

  3. SpringBoot系列之profles配置多环境(篇二)

    SpringBoot系列之profles配置多环境(篇二) 继续上篇博客SpringBoot系列之profles配置多环境(篇一)之后,继续写一篇博客进行补充 写Spring项目时,在测试环境是一套数 ...

  4. SpringBoot系列之集成Thymeleaf用法手册

    目录 1.模板引擎 2.Thymeleaf简介 2.1).Thymeleaf定义 2.2).适用模板 3.重要知识点 3.1).th:text和th:utext 3.2).标准表达式 3.3).Thy ...

  5. SpringBoot 系列教程自动配置选择生效

    191214-SpringBoot 系列教程自动配置选择生效 写了这么久的 Spring 系列博文,发现了一个问题,之前所有的文章都是围绕的让一个东西生效:那么有没有反其道而行之的呢? 我们知道可以通 ...

  6. 3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)

    1.外部配置加载顺序 SpringBoot也可以从以下位置加载配置: 优先级从高到低 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置  1.命令行参数 所有的配置都可以在命令行上进行指定 ...

  7. SpringBoot系列之profles配置多环境(篇一)

    SpringBoot profles配置多环境 23/100 发布文章 u014427391 软件环境简介 这里介绍一下SpringBoot提供的profiles属性加上maven配置一下多环境,在实 ...

  8. springboot系列四、配置模板引擎、配置热部署

    一.配置模板引擎 在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html ...

  9. SpringBoot系列之学习教程汇总

    对应SpringBoot系列博客专栏,例子代码,本博客不定时更新 一.配置篇 SpringBoot系列之@PropertySource读取yaml文件     >> source down ...

随机推荐

  1. linux 执行 javac 报错 javac: command not found

    bash: javac: command not found java 版本 1.8 [root@localhost home]# java -version openjdk version &quo ...

  2. Redis学习笔记(九、Redis总结)

    1.Redis五大对象: 在Redis中有五大对象,分别是String.List.Hash.Set.Sorted Set. 这五大对象都有自己独特的编码方式,每个编码的实现都不一样,有自己独特的使用场 ...

  3. abp去掉AbpUser中的Name,Surname,去掉姓和名分离

    abp是国外的框架,默认的框架中的AbpUser表中的Name和Surname是分开的,这不符合国情:可以先去掉 1. 在User类中重写Name和Surname,并设置为私有 2. 在DbConte ...

  4. 松软科技带你学前端:JavaScript 输出

    JavaScript 不提供任何内建的打印或显示函数. JavaScript 显示方案 JavaScript 能够以不同方式“显示”数据: 使用 window.alert() 写入警告框 使用 doc ...

  5. 使用NodeJS模块-第三方提供的模块(什么是npm)

    第三方开发者提供的模块 第三方模块是由NodeJS社区或第三方个人开发的功能模块,这些功能模块以软件包的形式存在.被发布在npmjs注册表中.npmjs是一个注册中心,所有软件包的信息都会被记录到该注 ...

  6. localstorage实现两个页面通信,购物车原理。

    如:A,B页面,A为商品页,B为购物车页,两个页面同时打开,在A页面点击商品添加至购物车,切换到B页面购物车怎么显示该商品信息 利用localStroage,A页面将数据存入localStroage, ...

  7. Vulnhub DC-1靶机渗透学习

    前言 之前听说过这个叫Vulnhub DC-1的靶机,所以想拿来玩玩学习,结果整个过程都是看着别人的writeup走下来的,学艺不精,不过这个过程也认识到,学会了很多东西. 所以才想写点东西,记录一下 ...

  8. Android8.1 源码修改之通过黑名单屏蔽系统短信功能和来电功能

    前言 之前写过一篇Android6.0 的屏蔽系统短信功能和来电功能,具体看这里 同样的最近有个新需求,需要将8.1 设备的来电功能和短信功能都屏蔽掉,特殊产品就是特殊定制,那就开始吧. 屏蔽短信功能 ...

  9. OPENGL 入门

    检测设备支持版本,判断是否支持opengl 2.0版本 初始化设置OpenGLES2.0 实现接口GLSurfaceView.Renderer 渲染 绘制图形 1.检测设备支持版本,判断是否支持ope ...

  10. Docker-核心笔记(含Dockerfile,Compose)

    Docker-核心笔记(含Dockerfile,Compose) 2017/03 Chenxin 参考 https://yeasy.gitbooks.io/docker_practice Docker ...