SpringBoot配置文件
一、配置文件
配置文件应该是无论在哪个框架中都是一个重要角色,而我们最为常用的xxx.xml和xxx.properties,还有springboot推荐使用的xxx.yml。
二、SpringBoot默认配置文件,文件名是固定的
•application.yml
yml的语法更加简洁,以数据为中心。
三、YAML文件基本语法
k: v,key: value的形式,冒号后必须留空格,而且是大小写敏感的。
server:
port: 8081
path: /hello
1、左对齐表示同级,退格表示子级;
2、对象、数组与json的格式相似:{port: 8081,path: /hello}、[1,2,3]
四、配置文件属性映射到java类中
@Component//先要把bean加入到容器中
@ConfigurationProperties(prefix = "person")//配置文件绑定注解,prefix指定了配置文件中的哪个属性
public class Person {
//与配置文件属性对应的字段
}
会提醒需要导入依赖:配置文件处理器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
五、@ConfigurationProperties与spring底层注解@Value的比较
1、@Value需要在字段上一个一个注解映射,并且支持表达式;
2、@ConfigurationProperties支持批量属性一次性导入;
eg:
//@Value("${person.last-name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
3、结论:开发者单个属性用@Value,批量配置用@ConfigurationProperties,一般是框架提供的组件中自带。
六、多配置文件,如开发和生产环境中不同配置文件
可以用application-{profile}.properties/yml
然后在主配置文件application.properties中制定profile
server:
port: 8083
spring:
profiles: dev
或
server:
port: 8084
spring:
profiles: prod #指定属于哪个环境
制定的配置文件会进行属性覆盖。
七、配置文件加载位置的优先级
–file:./
–classpath:/config/
–classpath:/
进行互补覆盖。