SpringBoot系列(二)---- 配置文件详解

本文详细介绍了SpringBoot的配置文件,包括YAML语法基础,如数据类型、对象、数组的写法,以及配置文件的注入案例。探讨了`@ConfigurationProperties`与`@Value`的区别,并解析了配置文件的加载位置、Profile的切换方式以及自动配置原理。内容涵盖配置文件的作用、数据结构和多种配置方式。
摘要由CSDN通过智能技术生成

配置文件

在SpringBoot中配置文件有两种,一种是application.properties,另一种是application.yml配置文件名是固定的。其中yml配置文件是在properties之后才有的。配置文件放在src/main/resources目录或者类路径/config下,配置文件的作用,就是修改SpringBoot自动配置的默认值,SpringBoot底层都给我们自动配置好了很多默认值,我们就需要通过灵活的使用properties和yml来进行修改默认配置。

我们通过Idea向导帮我们创建的新项目,在Resources目录下面会帮我们自动生成一个application.properties配置文件,如下图
在这里插入图片描述
在resources目录下我们可以暂时手动再创建一个application.yml文件,为了比较学习他们的区别(说明一下的就是,二者可以同时存在,不过最终只会运行一个,一般默认运行application.properties,不过我们可以通过配置,在application.properties中同时应用yml,达到多个配置文件的目的),依旧在resources目录下,直接右键new->File,创建一个名为application.yml的文件,如下图
在这里插入图片描述
YAML“YAML Ain’t a Markup Language”(YAML 不是一种标记语言)。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(是一种标记语言)。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件,即以数据为中心,比json、xml等更加适合做配置文件,以前的项目大都是使用xml作为配置文件的。

在全局配置文件中,可以对一些默认配置值进行修改,比如我们修改默认的端口号,我们如果使用xml作为配置文件,配置端口可能会是如下:

<server>
	<port>8081</port>
</server>

xml会浪费大量的内容给标签的开闭上,那如果我们在SpringBoot项目中使用properties和yml设置端口,又该如何呢,如下:

在这里插入图片描述
在这里插入图片描述

YAML语法

基本语法

  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 大小写敏感

k:(空格)v:表示一对键值对(空格必须有);
空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

数据类型

YAML 支持的三种数据结构:

  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的、不可再分的值

YAML常用写法

字面量:普通的值(数字,字符串,布尔)

k: v:字面直接来写;

  • 字符串默认不用加上单引号或者双引号;

  • "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

name:   "zhangsan \n lisi":
输出;zhangsan 换行  lisi
  • '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name:   ‘zhangsan \n lisi’:
输出;zhangsan \n  lisi

对象、Map(属性和值)(键值对)

  • 对象的一组键值对,使用冒号分隔。如:username: admin
  • 冒号后面跟空格来分开键值;
  • {k: v}是行内写法(就是写在一行)
friends:
  lastName: zhangsan
  age: 20

行内写法:

friends: {
   lastName: zhangsan,age: 18}

数组(List、Set)

  • 一组连词线(-)开头的行,构成一个数组,[]为行内写法
  • 数组,对象可以组合使用
pets:
 - cat
 - dog
 - pig

行内写法

pets: [cat,dog,pig]

配置文件值注入案例

  • application.yml中写入一些数据,就是写一个类的属性值以及对应的数值,如下
person:
  lastNane: zhangsan
  age: 18
  boss: true
  birthday: 2021/01/01
  maps: {
   k1: v1,k2: v2}
  lists:
    - lisi
    - wangwu
    - zhaoliu
  dog:
    name: xiaohei
    age: 2
  • 创建一个Person类和一个Dog类,类中的属性值和配置文件中的属性值要一一对应,并在Person的类上加上@ConfigurationProperties注解,注解中的前缀填写我们在配置文件中的person,如下
/**
 * Dog类
 **/
@ConfigurationProperties(prefix = "person")
@Component
public class Person {
   

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birthday;

    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;

	//以下是getter和setter、toString()方法,这里不在写出
	//直接ALT+INS快捷键生成就好

/**
 * Dog类
 **/
public class Dog {
   

    private String name;
    private Integer age;
//以下是getter和setter、toString()方法,这里不在写出
  • @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
  • prefix = "person":配置文件中哪个下面的所有属性进行一一映射
  • 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
  • @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值;
  • @Component,把类组件加到容器中
  • 要想使用@ConfigurationProperties这个注解,得要导入依赖:
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值