属性配置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 {
...
}