spring boot configuration

加载顺序
Spring Boot使用一个非常特殊的PropertySource顺序,反向加载,1具有最高优先级,它将最先加载17,最后加载1, 1中的属性最后将被应用
5. $HOME/.config/spring-boot当devtools处于活动状态时,目录中的Devtools全局设置属性。
6. @TestPropertySource 测试中的注释。
7. properties测试中的属性。可用于测试应用程序的特定部分@SpringBootTest的测试注释和注释。
8. 命令行参数。
9. 来自的属性SPRING_APPLICATION_JSON(嵌入在环境变量或系统属性中的嵌入式JSON)。
$ java -Dspring.application.json=’{“name”:“test”}’ -jar myapp.jar
$ java -jar myapp.jar --spring.application.json=’{“name”:“test”}’
10. ServletConfig 初始化参数。
11. ServletContext 初始化参数。
12. 的JNDI属性java:comp/env。
13. Java系统属性(System.getProperties())。
14. 操作系统环境变量。
15. 一RandomValuePropertySource,只有在拥有性能random.
16. Jar(application-{profile}.properties和YAML变体)之外的特定于配置文件的应用程序属性。
17. jar中的特定于配置文件的应用程序属性(application-{profile}.properties和YAML)。
18. jar(application.properties和YAML)之外的应用程序属性。
加载配置文件时,Spring Boot还支持通配符位置。指定spring.config.additional-location和时,也支持通配符位置spring.config.location=/config/
/, application.properties文件安装在诸如不同的位置/config/redis/application.properties和/config/mysql/application.properties。在这种情况下,通配符位置为config/*/,将导致两个文件都被处理。
19. jar中的应用程序属性(application.properties和YAML)。
20. @PropertySource@Configuration类上的注释。请注意,Environment在刷新应用程序上下文之前,不会将此类属性源添加到中。现在配置某些属性(如logging.*和spring.main.*在刷新开始之前先读取)为时已晚。
21. 默认属性(通过设置指定SpringApplication.setDefaultProperties)。

配置随机值
的RandomValuePropertySource是用于注射的随机值(例如,进入机密或试验例)是有用的。它可以产生整数,longs,uuid或字符串,如以下示例所示:

my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.uuid=${random.uuid}
my.number.less.than.ten=${random.int(10)}
my.number.in.range=${random.int[1024,65536]}
该random.int*语法是OPEN value (,max) CLOSE其中的OPEN,CLOSE任何字符和value,max是整数。如果max提供,value则为最小值,max为最大值(不包括)。

命令行属性
默认情况下,SpringApplication将所有命令行选项参数(即以开头的参数–,例如–server.port=9000)转换为aproperty并将其添加到Spring Environment。如前所述,命令行属性始终优先于其他属性源。
如果不希望将命令行属性添加到中Environment,则可以使用禁用它们SpringApplication.setAddCommandLineProperties(false)。

应用程序属性文件
SpringApplication从application.properties以下位置的文件加载属性并将其添加到Spring中,配置会反向覆盖,其中会先加载class下的配置,最后加载/config.
可以使用spring.config.name=myApplication来修改默认配置文件名替换application
Environment:

  1. /config,
  2. /,
  3. class/config包,
  4. class

YAML 属性
PropertySource不能加载yaml文件,所以Spring Framework 提供了两个方便的类,可用于加载 YAML 文档。 YamlPropertiesFactoryBean将 YAML 加载为Properties,而YamlMapFactoryBean将 YAML 加载为Map,这两个类将配置文件解析后,会将属性信息存入Spring的Environment对象中
@ConfigurationProperties
prefix :指定前缀
ignoreUnknownFields :忽略为止的属性
ignoreInvalidFields:是否忽略不可用的字段,默认为false, 当配置项不能被正确转化为Java类的字段值时,会抛出异常。
Properties class

@ConfigurationProperties(prefix = "test.service", ignoreUnknownFields = true,ignoreInvalidFields=false)
@Setter
@Getter
public class TestProperties {
	String name
	String value
	List lists;
	Map datas;
}

YAML

test:
 entity:
  name: test
  value: val
  lists:
  	- list1
  	- list2
  datas:
  	key1: val1
  	key2: val2

绑定到Map属性时,如果key包含小写字母数字字符或-以外的任何内容,则需要使用方括号表示法,以便保留原始值。如果键没有被[]包围,则所有非字母数字或-的字符都将被删除。例如,考虑将以下属性绑定到Map:

acme:
  map:
    "[/key1]": value1
    "[/key2]": value2
    /key3: value3

Disabled数据源主动加载 ,开发调试可以exclude禁用数据源自动加载,避免本地启动出错

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
@EnableConfigurationProperties({FileProperties.class, ServiceProperties.class})
public class EntityServiceApplication {
 ..........
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值