SpringBoot允许你使用外部配置的方式,因此你可以在不同的环境下使用相同的代码。外部配置文件的样式也是多种多样的。包括properties文件,yaml文件,环境变量,命令行参数。
配置的属性值可以通过@Value
的方式注入,也可以使用Spring的Environment,或者通过在类上加@ConfigurationProperties
不同配置方式的优先级,后者覆盖前者:
1.默认配置 : SpringAppliction.setDefaultProperties
2.@propertySource 注解 (这个是特别晚的,当refresh时才)
@Configuration
@PropertySource("classpath:/com/myco/app.properties")
public class AppConfig {
@Autowired
Environment env;
@Bean
public TestBean testBean() {
TestBean testBean = new TestBean();
testBean.setName(env.getProperty("testbean.name"));
return testBean;
}
}
3.application.properties
4.RondomValuePropertySouce (没听过)
5.OS 环境变量
6.System.properties
7.JNDI
8.ServletContext 初始化参数
9.Servlet Config
- SPRING_APPLICATION_JSON
- 命令参数
- 测试中的properties
- @TestPropertySource
- 开发工具全局设置属性
Config-Data (appliction.xxx.yml)的一个加在顺序:
1.首先jar包内 application.proxx/yml
2.application-{profile}.properties
3.jar包外的application.proxx/yml
4.jar包外的application-{profile}.properties
同时出现了yml 和properties 先 properties 后 yml
1.使用命令行参数
使用 —server.port =9999
也可以关闭命令行参数
2.Json
在你的工程下放一个 spring.application.json 文件 或者 使用 key-value key=SPRING_APPLICATION_JSON
3.外部文件
SpringBoot默认的是去加载 application.properties和 xx.yml文件,默认寻找的路径:
1.classpath
2.classpath 的 config目录
3.当前目录
4.当前目录的config目录
5.直接孩子的config子目录
可以使用 —spring.config.name=xxxx的方式修改使用配置文件名 xxx.yml
3.1特定文件
application-{profile}.yml
在yml中可以${}.