目录
前言
Spring Boot在程序中允许使用外部的配置文件获取配置信息,
这样就能够在不同的环境下使用相同的代码。
外部配置支持使用properties文件,YAML文件,环境变量和命令行参数。
使用@Value注解,可以直接将属性值注入到beans中。
一、属性注入
Spring Boot使用一个非常特别的PropertySource次序来允许对值进行合理的覆盖, 需要以下面的次序考虑属性:
1. 命令行参数
2. 来自于java:comp/env的JNDI属性
3. Java系统属性(System.getProperties())
4. 操作系统环境变量
5. 只有在random.*里包含的属性会产生一个RandomValuePropertySource
6. 在打包的jar外的应用程序配置文件(application.properties, 包含YAML和profile变量)
7. 在打包的jar内的应用程序配置文件(application.properties, 包含YAML和profile变量)
8. 在@Configuration类上的@PropertySource注解
9. 默认属性(使用SpringApplication.setDefaultProperties指定)
二、实现步骤
1.
- application.properties:
RandomValuePropertySource在注入随机值(如密钥或测试用例)时很有用。 它能产生整数、longs或字符串
random.int*语法是OPEN value (,max) CLOSE, 此处OPEN, CLOSE可以是任何字符, 并且value, max是整数。 如果提供max, 那么value是最小的值, max是最大的值(不包含在内)
- User:
- Springboot1StartApplication:
- 运行结果
默认情况下, SpringApplication将任何可选的命令行参数(以'--'开头, 比如, --server.port=9000) 转化为property,并将其添加到Spring Environment中。
命令行属性总是优先于其他属性源。