Spring Boot 启动(二) 配置详解

Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html)

  1. Spring Boot 配置使用
  2. Spring Boot 配置文件加载流程分析 - ConfigFileApplicationListener

一、Spring Framework 配置

略...

二、Spring Boot 配置

2.1 随机数配置

name.value=${random.int}
name.int=${random.int}
name.long=${random.long}
name.uuid=${random.uuid}
name.test1=${random.int(10)}
name.test2=${random.int[10,20]}

2.2 命令参数

java -jar xxx.jar --server.port=8080

2.3 多配置文件

applicaiton-dev.properties 		# 开发环境
applicaiton-test.properties # 测试环境
applicaiton-prod.properties # 生产环境

配置文件关联 profile 除了以上方式,还有另外两种方式:

  • applicaiton-dev.properties 文件名指定剖面
  • applicaiton.properties && spring.profile=dev 文件内容配置 spring.profile
  • applicaiton-dev.properties && spring.profile=dev 文件名指定剖面且文件内容配置 spring.profile

2.3 spring.application.json

spring.application.json 或 SPRING_APPLICATION_JSON 定义的 json 字符串。

java -jar xxx.jar --spring.application.json='{"foo":"bar"}'

2.4 Spring Boot 加载顺序

  1. 命令行传入的参数。
  2. SPRING_APPLICATION_JSON 中的属性。 SPRING_APPLICATION_JSON 是以 JSON 格式配置在系统环境变量中的内容。
  3. java:comp/env 中的 JNDI 属性。
  4. Java 的系统属性,可以通过 System.getProperties() 获得的内容操作。
  5. 系统的环境变量。
  6. 通过 random.* 配置的随机属性。
  7. 位于当前应用 jar 包之外,针对不同 {profile} 环境的配置文件内容,例如 application-{profile}.properties 或是 YAML 定义的配置文件。
  8. 位于当前应用 jar 包之内,针对不同 {profi1e} 环境的配置文件内容,例如 application-{profile}.properties 或是 YAM 定义的配置文件。
  9. 位于当前应用 jar 包之外的 application.properties 和 YAML 配置内容。
  10. 位于当前应用 jar 包之内的 application.properties 和 YAML 配置内容。
  11. 在 @Configuration 注解修改的类中,通过 @PropertySource 注解定义的属性。
  12. 应用默认属性,使用 SpringApplication.setDefaultProperties 定义的内容。

以上配置属性加载类如下:

  1. 第一项是在 prepareEnvironment -> configureEnvironment -> configurePropertySources 定义的 CommandLinePropertySource。
  2. 第二项是在 spring.factories 中定义的 SpringApplicationJsonEnvironmentPostProcessor 处理,也实现了 EnvironmentPostProcessor 接口,优先级高于 ConfigFileApplicationListener。
  3. 第三-五项是 Spring Framework 标准的属性,初始化 Environment 时配置。
  4. 第六项是在 ConfigFileApplicationListener 中定义的 RandomValuePropertySource。
  5. 第七-十项是在 ConfigFileApplicationListener 中加载配置文件,也实现了 EnvironmentPostProcessor 接口。

每天用心记录一点点。内容也许不重要,但习惯很重要!

Spring Boot 启动(二) 配置详解的更多相关文章

  1. Spring Boot启动命令参数详解及源码分析

    使用过Spring Boot,我们都知道通过java -jar可以快速启动Spring Boot项目.同时,也可以通过在执行jar -jar时传递参数来进行配置.本文带大家系统的了解一下Spring ...

  2. Spring Boot整合Mybatis配置详解

    首先,你得有个Spring Boot项目. 平时开发常用的repository包在mybatis里被替换成了mapper. 配置: 1.引入依赖: <dependency> <gro ...

  3. spring boot application properties配置详解

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  4. (转)Spring boot——logback.xml 配置详解(二)

    文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 1 根节点<configuration>包含的属性 scan: 当此属性设置为t ...

  5. Spring boot——logback.xml 配置详解(二)

    阅读目录 1 根节点包含的属性 2 根节点的子节点 文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 回到顶部 1 根节点<config ...

  6. (转)Spring boot——logback.xml 配置详解(三)<appender>

    文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 1 appender <appender>是<configuration& ...

  7. Spring boot——logback.xml 配置详解(三)<appender>

    阅读目录 1 appender 2  encoder 文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 回到顶部 1 appender < ...

  8. (转)Spring boot——logback.xml 配置详解(四)<filter>

    文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 1 filter的使用 <filter>: Logback的过滤器基于三值逻辑( ...

  9. Spring boot——logback.xml 配置详解(四)<filter>

    阅读目录 1 filter的使用 2 常用的过滤器 文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 回到顶部 1 filter的使用 < ...

  10. Spring Boot(八):RabbitMQ详解

    Spring Boot(八):RabbitMQ详解 RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多 ...

随机推荐

  1. gentoo virtual couldnt download

    今天在更新系统的时候,提示 virtualbox-bin 从原始地址下载不了,经过一番摸索,通过下面的方式即可正常安装. http://download.virtualbox.org/virtualb ...

  2. Storm实现实时大数据分析(storm介绍,与Hadoop比较,)

    一.storm与Hadoop对比 Hadoop: 全量数据处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的 ...

  3. chrome 如何开启网页另存为.mhtml 功能

    打开chrome浏览器,输入地址:chrome://flags/   找到将网页另存为MHTML,点击启用就可以了. 或者直接输入:chrome://flags/#save-page-as-mhtml

  4. 解决jQuery和其他库冲突

    <script> console.log($); // //jquery在其他库之前导入,直接使用jQuery()或 // var $replace = jQuery.noConflict ...

  5. js学习2

    1.打开新窗体 -window.open([URL], [窗口名称], [参数字符串]) - 窗口名称: _blank:在新窗口显示目标网页 _self:在当前窗口显示目标网页 _top:框架网页中在 ...

  6. Python module ---- abc

    python中并没有提供抽象类与抽象方法,但是提供了内置模块abc(abstract base class)来模拟实现抽象类.  ABC,Abstract Base Class(抽象基类),主要定义了 ...

  7. JVM-如何判断对象存活与否与CMS收集器和G1收集器的区别

    JVM如何判断对象存活? 1.计数器 2.可达性分析   (很多主流语言采用这种方法来判断对象是否存活) 计数器:每当有一个地方引用该对象时,计数器 +1:引用失效则 -1: 优点:实现简单,判定效率 ...

  8. 转: Ext.data.Store 修改Post请求

    Extjs 4.0版本 var Store = Ext.create('Ext.data.Store', { pageSize: pageSize, model: 'Ext.data.Model名称' ...

  9. Packet Tracer路由器简单配置

    路由器Router2:Router>enable 进入特权模式Router#configure terminal 进入全局配置模式Router(config)#hostname RA 将路由器名 ...

  10. SQL Server 与MySQL中排序规则与字符集相关知识的一点总结

    字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码排序规则则是在特定字符集的 ...