SpringBoot允许你使用外部配置的方式,因此你可以在不同的环境下使用相同的代码。外部配置文件的样式也是多种多样的。包括properties文件,yaml文件,环境变量,命令行参数。
配置的属性值可以通过@Value 的方式注入,也可以使用Spring的Environment,或者通过在类上加@ConfigurationProperties
不同配置方式的优先级,后者覆盖前者:
1.默认配置 : SpringAppliction.setDefaultProperties
2.@propertySource 注解 (这个是特别晚的,当refresh时才)

  1. @Configuration
  2. @PropertySource("classpath:/com/myco/app.properties")
  3. public class AppConfig {
  4. @Autowired
  5. Environment env;
  6. @Bean
  7. public TestBean testBean() {
  8. TestBean testBean = new TestBean();
  9. testBean.setName(env.getProperty("testbean.name"));
  10. return testBean;
  11. }
  12. }

3.application.properties
4.RondomValuePropertySouce (没听过)
5.OS 环境变量
6.System.properties
7.JNDI
8.ServletContext 初始化参数
9.Servlet Config

  1. SPRING_APPLICATION_JSON
  2. 命令参数
  3. 测试中的properties
  4. @TestPropertySource
  5. 开发工具全局设置属性

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中可以${}.