首页 > 技术文章 > SpringBoot配置文件

Oven1993 2019-04-24 19:58 原文

一、配置文件

配置文件应该是无论在哪个框架中都是一个重要角色,而我们最为常用的xxx.xml和xxx.properties,还有springboot推荐使用的xxx.yml。

二、SpringBoot默认配置文件,文件名是固定的

•application.properties

•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:./config/

–file:./

–classpath:/config/

–classpath:/

进行互补覆盖。

 

推荐阅读