接下来我们再来看SpringBoot的一个特点,外部配置的加载顺序,也就是说,SpringBoot我们要写一些配置,配置可以写在我们的配置文件,application.properties,放到类路径下,我们不仅可以在这里配置,还可以从这些位置加载配置,我们把配置写在这些位置,也是可以的,详细能够写在哪些位置呢,我这里有列举11个,但是官方文档

Externalized Configuration,有一个外部配置,官方文档列举了17个https://docs.spring.io/spring-boot/docs/1.5.22.RELEASE/reference/html/boot-features-external-config.htmlDevtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).
@TestPropertySource annotations on your tests.
@SpringBootTest#properties annotation attribute on your tests.
Command line arguments.
Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)
ServletConfig init parameters.
ServletContext init parameters.
JNDI attributes from java:comp/env.
Java System properties (System.getProperties()).
OS environment variables.
A RandomValuePropertySource that only has properties in random.*.
Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)
Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)
Application properties outside of your packaged jar (application.properties and YAML variants).
Application properties packaged inside your jar (application.properties and YAML variants).
@PropertySource annotations on your @Configuration classes.
Default properties (specified using SpringApplication.setDefaultProperties).这些其实都太多了,其实你只要关注我红颜色这几个,我提取出的这个个可以看一下,SPRING BOOT,也可以从以下位置加载配置,是按照优先级从高到低,也就是说,高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置,记住这句话就行了,那我们主要来看这几个位置,比如第一个我们可以放到命令行参数上,这个是什么意思呢,来给大家举个例子

我们这个应用在打包的时候,我们来把这个应用来打一个包,如果我们在打包的时候呢,我们要打包完成以后,我们来访问这个项目,关键打包的时候呢,只会识别main,java,resources下的一些东西,我用java -jar的命令,我们来执行这个jar包,如果我们默认来执行,他就会找到config下的8082端口,从而以8082端口来启动,并且跟他形成互补配置,访问boot02,没什么问题,但是某一天我想改一下服务端的端口号,那我们得写一个配置文件再来改,这也太麻烦了,我在执行命令的时候,我们可以使用命令的方式,我写一个服务器的端口号,我来给他指定8087java -jar .... --server.port=8087我来指定他

看看他是什么端口启动呢,我们发现他就是8087端口了,命令行的优先级别,我们里边的配置文件,默认我们还配了访问名,我们可以使用命令行修改spring boot的默认配置,我们在命令行的时候加上他,我们以前命令行配置也演示了很多,特别是spring.config.location,指定配置文件位置的,我们可以加载来自JNDI的,或者JAVA虚拟机的系统属性,包括也可以是环境变量,主要看下面这几个,jar包外的带profile的,jar包内的加profile的,这四个我们就总结成两个,首先是优先加载带profile的,如果我们指定了这个环境,那他就优先加载带profile的,不管是jar包外带的还是jar内带的,再来加载,不带profile的,但是不管怎么加载,都是由jar外向jar包内进行寻找,然后高优先级的配置,覆盖低优先级的配置,这个也是非常有用的

命令行的多个参数怎么区分,我们可以直接用空格,来指定第二个参数,比如server.context-path,比如我们就叫abc,这种方式是可以的

如果我们要启动应用,要改配置,我们可以在命令行里边把我们所有的配置,都改掉,来启动,他一定是从8087端口启动,包括项目启动路径也会叫abc,现在访问boot02就不行了,我们访问abc,现在是可以的,我们所有的参数都可以按照优先级,都来指定到命令行,多个配置用空格分开,--配置项=值,这是我们第一种命令行参数,但如果太多了我们来这么指定,然后我就可以这么来做,我们第一个命令行参数,这是非常重要的,第二个我们可以从jar包外部来加载,profile我们也说过了,可以简单演示一下,可以用@Configuration注解类上@PropertyResource专门引用的配置文件,而我们实际的所有加载来源,详细就来看我们的官方文档,有这么多,这个东西太多了,我们实际用不到这么多,参考官方文档https://docs.spring.io/spring-boot/docs/1.5.22.RELEASE/reference/html/boot-features-
external-config.html这是我们所有的配置加载来源,但是记住一句话,Springboot可以从这些位置来加载配置,优先级从高到低,然后高优先覆盖低优先,所有合起来形成互补配置,这就是我们的总结

SpringBoot_配置-外部配置加载顺序相关推荐

  1. Spring:@AutoConfigurexxx注解-控制配置类的加载顺序

    1.美图 2.概述 控制配置类的加载顺序(@AutoConfigureAfter.@AutoConfigureBefore.@AutoConfigureOrder) AutoConfigureAfte ...

  2. web.xml 文件中的配置节的加载顺序

    为什么80%的码农都做不了架构师?>>>    web.xml 文件中一般包括 servlet, filter, listener 等的配置,那么它们是按照一个什么顺序加载呢? 首先 ...

  3. [Log4j] Log4j 的配置和配置文件加载顺序

    需求:  把log4j.properties 配置问题放置到工程外面的指定文件夹.  具体原因参考http://blog.csdn.net/lihe2008125/article/details/77 ...

  4. Spring Boot 配置加载顺序详解

    使用 Spring Boot 会涉及到各种各样的配置,如开发.测试.线上就至少 3 套配置信息了.Spring Boot 可以轻松的帮助我们使用相同的代码就能使开发.测试.线上环境使用不同的配置. 在 ...

  5. Spring Boot配置加载顺序

    Spring Boot 不仅可以通过配置文件进行配置,还可以通过环境变量.命令行参数等多种形式进行配置.这些配置都可以让开发人员在不修改任何代码的前提下,直接将一套 Spring Boot 应用程序在 ...

  6. SpringBoot配置加载顺序

    文章目录 前言 一.Spring Boot 配置优先级 二.命令行参数 示例 1 配置文件 示例 2 三.示例分析 前言 Spring Boot 不仅可以通过配置文件进行配置,还可以通过环境变量.命令 ...

  7. 使用 加载 顺序_SpringBoot系列教程之Bean加载顺序之错误使用姿势辟谣

    在网上查询 Bean 的加载顺序时,看到了大量的文章中使用@Order注解的方式来控制 bean 的加载顺序,不知道写这些的博文的同学自己有没有实际的验证过,本文希望通过指出这些错误的使用姿势,让观文 ...

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

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

  9. 配置文件加载位置||外部配置加载顺序||自动配置原理

    配置文件加载位置 SpringBoot会从这四个位置全部加载主配置文件:互补配置: 外部配置加载顺序 自动配置原理 1.自动配置原理: 1).SpringBoot启动的时候加载主配置类,开启了自动配置 ...

最新文章

  1. 语音识别——基于深度学习的中文语音识别tutorial(代码实践)
  2. Matplotlib实例教程(九)热力图
  3. L309 单音节词读音规则(一)-辅音字母发音规则
  4. Oracle数据库管理与开发pdf
  5. 程序人生:提高编程逻辑的 10 种最“疯狂”的方法
  6. C#.NET学习笔记7--11---算术运算符,变量赋值,变量的交换,布尔表达式1,布尔表达式2
  7. 产品,是解决问题的载体
  8. 在使用FireFox浏览器时,经常打开新标签,页面总是不断自动刷新,解决办法
  9. EF 操作数据库中的表
  10. WinXP IIS配置
  11. bat命令打开指定网页进入全屏
  12. 只要学会这个PDF压缩方法,压缩PDF不再是难题
  13. java视频教程 设计模式,Gof设计模式视频课程(Java实现)
  14. Fanuc机器人从控制柜导出GSD文件
  15. java 验证码框架_Java验证码开源框架:jcaptcha
  16. 行政区域村级划分数据库_两区划定数据库规范(试行)
  17. SQL 求同比 环比
  18. Unity3D 学习笔记(六) 手柄配置
  19. www.ku6d.com采集目标
  20. 上班最强摸鱼游戏-多人联机小游戏 (一)

热门文章

  1. Silverlight中如何实现上下标的显示
  2. Google Map 自定义infowindow
  3. POJ 1611 The Suspects (并查集)
  4. Android `AsyncTask`简要分析
  5. iOS8 TabBarItem设置自定义图片问题
  6. vue中过滤器比较两个数组取相同值
  7. 基于Swoole开发PHP扩展
  8. 《深入理解java内存模型》学习整理1
  9. 活动目录域结构和域信任关系建立实验
  10. Spring quartz 并发性研究