概述
1、配置文件
SpringBoot 使用一个全局的配置文件,配置文件名是固定的:
- application.properties
- application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
配置文件放在src/main/resources目录或者类路径/config下
2、YAML
YAML(YAML Ain’t Markup Language)
YAML:以数据为中心,比json、xml等更适合做配置文件
(1)、基本语法
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- 大小写敏感
(2)、支持的三种数据结构
- 对象:键值对的集合
- 数组:一组按次序排列的值
- 字面量:单个的、不可再分的值
YAML:配置例子:
server:
port:8080
XML:
<server>
<port>8080</port>
</server>
(3)、YAML 常用写法
对象(Map):
- 对象的一组键值对用冒号分割。如:user:root
- **冒号后面用<font color="red">空格</font>隔开**
- 用 {} 表示行内写法。如{user: admin}
K:V 方式:
person:
lastName: Tom
age: 22
行内方式:
person: {lastName: Tom,age: 22}
数组:
- 一组连词线(-)开头的行,构成一个数组,[]为行内写法
list:
- lisi
- wangwu
- zhangsan
list: [list,wangwu,zhangsan]
字面量:普通的值(数字、字符串、布尔)
- K:V : 字面直接来写;
- 字符串默认不加单引号或双引号:
- ”” 双引号:不会转义字符串里面的特殊字符,特殊字符作为本身先表达的意思。
"zhangsan n lisi"
输出:
zhangsan
lisi
- ” 单引号:会转义特殊字符,特殊字符最终只是一个普通的字符串数据。
'zhangsan n lisi'
输出:
zhangsan n lisi
3、配置文件值注入
配置文件:
person:
name: ZhangChao
age: 22
boss: false
birth: 1996/05/17
maps: {k1: v1,k2: v2}
list:
- Lisi
- ZhangSan
- Tom
dog:
name: Jack
age: 5
JavaBean:
/*
将配置文件中每一个属性的值,映射到这个组件中
@ConfigurationProperties:告诉 springboot 将这个类中所有的属性值和配置文件中相关配置进行绑定
prefix:配置文件中哪一个下面的所有属性进行一一映射
只有当前是 spring 主件,才能使用使用容器提供的 @ConfigurationProperties 功能
*/
@PropertySource(value = {"classpath:application.yml"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean boss;
private Date birth;
private Dog dog;
private Map<String,Object> maps;
private List<Object> list;
...
...
...
}
public class Dog {
private String name;
private Integer age;
...
...
}
测试代码:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootQuickApplicationTests {
@Autowired
private Person person;
@Test
public void contextLoads() {
System.out.println(person);
}
}
我们可以导入配置文件处理器,以后编写配置就有提示了
<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
<dependency>
<groupId>org.springframework.boot<groupId>
<artifactId>spring‐boot‐configuration‐processor<artifactId>
<optional>true</optional>
</dependency>
4、配置文件占位符
(1)、随机数
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
(2)、占位符获取之前配置的值,如果没有可以是用 ” : “指定默认值
person.last‐name=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15
5、Profile
(1)、多 Profile 文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml默认使用application.properties的配置;
(2)、yml支持多文档块方式
— 三个短横线分割多个文档块
server:
port: 8081
spring:
profiles:
active: test1
#指定属于属于哪个环境
---
server:
port: 8083
spring:
profiles: test2
---
server:
port: 8084
spring:
profiles: dev
(3)、激活指定profile
- 在配置文件中指定 spring.profiles.active=dev
命令行:
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar spring.profiles.active=dev;
可以直接在测试的时候,配置传入命令行参数。
虚拟机参数:
-Dspring.profiles.active=dev
6、配置文件加载位置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文 件
- file:./config/
- file:./
- classpath:/config/
- classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;互补配置。
我们还可以通过spring.config.location来改变默认的配置文件位置:
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默 认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
最后
以上就是羞涩海燕为你收集整理的三、SpringBoot-配置文件的全部内容,希望文章能够帮你解决三、SpringBoot-配置文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复