一.配置文件的生效顺序,会对值进行覆盖:
-
@TestPropertySource
注解
-
- 命令行参数
-
- Java系统属性(System.getProperties())
-
- 操作系统环境变量
-
- 只有在random.*里包含的属性会产生一个RandomValuePropertySource
-
- 在打包的jar外的应用程序配置文件(application.properties,包含YAML和profile变量)
-
- 在打包的jar内的应用程序配置文件(application.properties,包含YAML和profile变量)
-
- 在
@Configuration
类上的@PropertySource
注解
- 在
-
- 默认属性(使用SpringApplication.setDefaultProperties指定)
二.配置随机值
#32位随机数
roncoo.secret=${random.value}
#随机整数
roncoo.number=${random.int}
roncoo.bignumber=${random.long}
roncoo.number.less.than.ten=${random.int(10)}
#范围
roncoo.number.in.range=${random.int[1024,65536]}
- 读取使用注解:
@Value(value = "${roncoo.secret}")
- 注:出现黄点提示,是要提示配置元数据,可以不配置
三.属性占位符
- 当application.properties里的值被使用时,它们会被存在的Environment过滤,所以你能够引用先前定义的值(比如,系统属性)。
roncoo.name=www.roncoo.com
roncoo.desc=${roncoo.name} is a domain name
四.Application属性文件,按优先级排序,位置高的将覆盖位置低的
-
- 当前目录下的一个/config子目录
-
- 当前目录
-
- 一个classpath下的/config包
-
- classpath根路径(root)
- 这个列表是按优先级排序的(列表中位置高的将覆盖位置低的)
五. 配置应用端口和其他配置的介绍
#端口配置:
server.port=8090
server.servlet.context-path=/system #配置系统访问的前缀
#时间格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#时区设置
spring.jackson.time-zone=Asia/Chongqing
六. 使用YAML代替Properties
注意写法:冒号
后要加个空格
七、 使用Bean的方式注入属性
- 使用这种方式,就会吧spring.mail 的属性值赋值给 MailProperties 里的属性
@ConfigurationProperties(prefix="spring.mail")
-
可以使用注入的方式,也可以使用以下的方式进行:
@EnableConfigurationProperties