springboot配置文件
发表于更新于
字数总计:1.3k阅读时长:5分钟阅读量: 成都
配置文件类型
主要有两种,分别为properties格式的和yaml格式的
properties
此配置文件注重格式,不同等级使用.
分割,如下
1 2 3
| server.port=80 server.xxx.xxx=xxx server.xxx.xxx.xxx=xxx
|
yaml
此配置文件后缀分为两种,一种是以.yml
结尾,较为常用,一种是以.yaml
结尾,他们的格式都是一样的,只是文件后缀不一样
此配置文件的格式注重数据,以空格
分级,空格不限次数,建议使用两个空格分级,案例如下
1 2 3 4 5 6 7 8 9 10
| student: school: "成都工业学院" clazz: "软件工程22级专升本1班" name: "马某人" phone: "19960798888" age: 21 hobbies: - "跑步" - "骑自行车" - "狂吃一顿"
|
yaml的数据类型
yaml的数据类型分为四种
- 字符串(String):表示文本内容,可以使用单引号或双引号括起来。例如:
name: 'John'
。 - 数字(Number):表示数值。可以是整数或浮点数。例如:
age: 25
。 - 布尔值(Boolean):表示真或假。可以是true或false。例如:
isStudent: true
。 - 列表(List):表示有序的元素列表。使用短横线(-)作为前缀,并使用缩进表示层级关系。
其中:如果字符串不用引号分隔,则会自动解析,如果使用引号则表示为字符串,并且''
包裹的字符串内的内容不会转义,""
包裹的字符串会进行转义。
读取YAML配置文件
首先SpringBoot默认会去读取项目根目录下src/main/resources
目录下的application.properties
,application.yml
,application.yaml
这三个配置文件
并且优先级按从左到右依次降低,SpringBoot读取YAML配置文件分为三种方法
value
在类中直接使用@value
注解来获取,使用${}
来获取YAML中的数据,案例如下
1 2
| @Value("${student.hobbies[0]}") private String hobbit;
|
Environment
SpringBoot在容器中已经有了一个装了YAML中所有内容的类,类名为org.springframework.core.env.Environment
自动注入即可,案例如下:
1 2 3 4 5 6 7
| @Autowired private Environment environment;
@GetMapping("/environment/student/name") public JsonData getStudentNameByEnvironment() { return new JsonData(0, environment.getProperty("student.name"), "处理成功!"); }
|
自定义类
给需要装载数据的类打上注解,并让Spring容器进行管理。
其中@ConfigurationProperties(prefix = "student")
注解中的prefix是必须要写的,并且要与配置文件中的对象名保持一致。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| package com.example.domain;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Repository;
import java.util.Arrays;
@ConfigurationProperties(prefix = "student")
@Repository public class Student { private String school; private String clazz; private String name; private String phone; private Integer age; private String[] hobbies;
public Student() { }
public Student(String school, String clazz, String name, String phone, Integer age, String[] hobbies) { this.school = school; this.clazz = clazz; this.name = name; this.phone = phone; this.age = age; this.hobbies = hobbies; }
@Override public String toString() { return "Student{" + "school='" + school + '\'' + ", clazz='" + clazz + '\'' + ", name='" + name + '\'' + ", phone='" + phone + '\'' + ", age=" + age + ", hobbies=" + Arrays.toString(hobbies) + '}'; }
public String getSchool() { return school; }
public void setSchool(String school) { this.school = school; }
public String getClazz() { return clazz; }
public void setClazz(String clazz) { this.clazz = clazz; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
public Integer getAge() { return age; }
public void setAge(Integer age) { this.age = age; }
public String[] getHobbies() { return hobbies; }
public void setHobbies(String[] hobbies) { this.hobbies = hobbies; } }
|
光完成上面两步还不够,这时候IDEA会有警告,需要在pom配置文件中添加一个依赖坐标,就不会有警告了
1 2 3 4 5
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
|
使用方法如下
1 2 3 4 5 6 7
| @Autowired private Student student;
@GetMapping("/yaml/student") public JsonData getYamlStudentByDomain() { return new JsonData(0, student, "处理成功!"); }
|
多配置文件
通常开发中,项目需要运行在许多环境中,例如:开发环境、测试环境与生产环境。
如果每次移动项目就需要更改配置文件是特别麻烦的,多配置文件能帮助我们解决这个问题。
多文档
多配置文件命名规则:application-xxx.properties
,当然,使用yaml
也是可以的。
需要执行哪个配置,就在application.properties
中配置spring.profiles.active=xxx
就行了。
yaml多文档
yaml使用---
来分隔不同的配置,并使用spring.profiles=xxx
在不同配置区域为配置命名,使用spring.profiles.active=xxx
激活配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| --- server: port: 8081
spring: profiles: dev --- server: port: 8082
spring: profiles: test --- server: port: 8083
spring: profiles: pro ---
spring: profiles: active: dev
|
外部激活
上面两种都是在项目内部使用spring.profiles.active=xxx
激活配置文件的,下面介绍两种项目外部激活配置的方式。
- 虚拟机参数:在VM options指定:
-Dspring.profiles.active=dev
- 命令行参数:运行jar包时指定配置文件:
java –jar xxx.jar --spring.profiles.active=xxx