我是靠谱客的博主 羞涩海燕,最近开发中收集的这篇文章主要介绍三、SpringBoot-配置文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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
  1. 在配置文件中指定 spring.profiles.active=dev
  2. 命令行:

    java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar spring.profiles.active=dev;

可以直接在测试的时候,配置传入命令行参数。

  1. 虚拟机参数:

    -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-配置文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部