属性配置17中方式
优先级逐级下降 若前一优先级配置了,后续级别配置的将不起作用
- Devtools全局配置
 - 测试环境@TestPropertySource注解
 - 测试环境properties属性
 - 命令行参数
 - SPRING_APPLICATION_JSON属性
 - ServletConfig初始化参数
 - ServletContext初始化参数
 - JNDI属性
 - JAVA系统属性
 - 操作系统环境变量
 - RandomValuePropertySource随机值属性
 - jar包外的application-{profile}.properties
 - jar包内的application-{profile}.properties
 - jar包外的application.properties
 - jar包内的application.properties
 - @PropertySource绑定配置
 - 默认属性
 
除了上述方式添加参数意外,还可以在系统初始化器、或者监听器准备好了过后,像容器里面添加属性
.properties 文件的优先级高于.yml文件
配置实现
// RandomValuePropertySource随机值属性
mooc.avg.age=${random.int[20,30]}
// JAVA系统属性
mooc.website.path=${PATH}
// ServletConfig初始化参数、ervletContext初始化参数
一般通过
server.xxxxx = xxxx 来配置
// SPRING_APPLICATION_JSON属性
在启动的时候添加参数:
--SPRING_APPLICATION_JSON={\"test.param.one\":\"test000002\"}
// 命令行参数
启动的时候直接指定
--test.param.one=test000002
// 测试环境properties属性
@SpringBootTest(properties = {"test.param.one=test000002"})
// 测试环境@TestPropertySource注解
@TestPropertySource({demo.properties})
- 默认属性配置
 
启动类当中设置默认数据
SpringApplication springApplication = new SpringApplication(Sb2Application.class);
Properties properties = new Properties();
properties.setProperty("test_param_one","test_0000001");
springApplication.setDefaultProperties(properties);
springApplication.run(args);
---------------------------
// 使用方式demo
@Component
public class ResultProperties implements CommandLineRunner, EnvironmentAware {
    private Environment environment;
    @Override
    public void run(String... args) throws Exception {
        System.out.println(environment.getProperty("test_param_one"));
    }
    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }
}
- @PropertySource绑定
 
@SpringBootApplication
@MapperScan("com.mooc.sb2.mapper")
@PropertySource(value = {"demo.properties","demo2.properties"})
public class Sb2Application {
    ...
}