SpringBoot学习笔记(二)-SpringBoot的配置文件

Scroll Down

SpringBoot学习笔记(二)-SpringBoot配置文件

spring initalizr会默认在resource下生成一个application.properties或者application.yaml配置文件,springBoot默认也是执行的该配置文件,我们可以在这个配置文件中配置相应的属性

server.port=8081
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.config.additional-location=
spring.config.location=
spring.config.name=application

SpringBoot中的yaml语法

YAML文件格式是Spring Boot支持的一种JSON超集文件格式,相对于传统的Properties配置文件,YAML文件是以数据为核心配置的:

  • YAML文件的扩展名可以使用.yml或者.yaml
  • 使用"key:(空格) value"格式配置属性,并使用缩进控制层级关系

YAML采用的配置格式不像properties的配置那样以单纯的键值对形式来表示,而是以类似大纲的缩进形式来表示。比如:下面的一段YAML配置信息

environments:
    dev:
        url: http://dev.bar.com
        name: Developer Setup
    prod:
        url: http://foo.bar.com
        name: My Cool App

与其等价的properties配置如下。

environments.dev.url=http://dev.bar.com
environments.dev.name=Developer Setup
environments.prod.url=http://foo.bar.com
environments.prod.name=My Cool App

SpringBoot中配置文件注入

使用application.properties进行注入

先创建两个实体类,Pet和Person

public class Pet {
	private String type;
	private String name;

}
@Component //注入到IOC容器
@ConfigurationProperties(prefix = "person") //将配置文件中以person开头的属性注入到该类中
public class Person {
private int id; //id
private String name; 
private List hobby; 
private String[] family; 
private Map map;
private Pet pet; 

}

在pom文件中增加依赖,使用@ConfigurationProperties注解时就可以有自动提示产生

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

相应配置文件

server.port=8081
person.id=1
person.name=tom
person.hobby=吃饭,睡觉,打豆豆
person.family=father,mother
person.map.k1=v1
person.map.k2=v2
person.pet.type=dog
person.pet.name=旺财
#随机值设置及参数间引用配置
tom.age=${random.int[10,20]}
tom.description=tom的年龄可能是${tom.age}
simplebean.id=1
simplebean.name=自定义starter

使用application.yaml进行注入

使用上面创建好的实体类,增加application.yaml配置文件

# 对实体对象person进行属性配置
person:
  id: 2
  name: lucy
  hobby: [吃饭,睡觉,打豆豆]
  family: [father,mother]
  map: {k1: v1,k2: v2}
  pet: {type: dog,name: 旺财}

SpringBoot中多环境配置

我们的项目通常都会有多个环境,每个环境中对应的配置文件是不同的,例如有开发环境,测试环境,生产环境

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

  • application-dev.properties:开发环境
  • application-test.properties:测试环境
  • application-prod.properties:生产环境

至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应配置文件中的{profile}值。如:spring.profiles.active=test就会加载application-test.properties配置文件内容。

Spring配置文件加载顺序