20191020-Spring Boot配置文件      

本文介绍了Spring Boot的配置文件,主要聚焦于YAML格式,包括其基本语法、数据结构、配置文件值注入实战、解决中文乱码问题、@ConfigurationProperties与@Value的区别、@PropertySource、@ImportResource和@Bean的使用,以及配置文件占位符和Profile多环境支持。
摘要由CSDN通过智能技术生成

2.1 配置文件简介

      Spring Boot修改默认配置信息使用的是一个配置文件,配置文件的名称是固定的;有两种形式:

  • application.properties
  • application.yml

配置文件的作用: 用于修改SpringBoot的默认配置,在SpringBoot中很多配置都已经事先准备好了,没有特殊需求我们直接使用就可以。

什么是YAML呢?
      YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。
      YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

为什么要使用YAML作为配置文件的格式?
      以前大部分的配置文件多为xml,但是对于每一个配置xml都需要有指定的标签,有的时候定义的标签还多于配置信息,所以使用xml作为配置文件也比较麻烦复杂。而YAML在写法上更为的简单,YAML以数据为中心,它比JSON、XML等格式更适合作为配置文件格式。

  • XML配置信息
<server>
	<port>8081</port>
</server>
  • YAML配置信息
server:
  port: 8081

      从以上对比中就可以清晰地看出YAML写法更为简洁。

2.2 YAML的语法

1.基本语法
  • 使用缩进表示层级关系,k:(空格)v:表示一对键值对(空格是必不可少的)。
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 缩进的空格数目不重要,只要是相同层级的元素左侧对齐即可。
  • YAML中属性和值是大小写敏感的。

YAML使用实例:

person:
   lastName: 张三
   age: 15
2.YAML支持三种数据结构
  • 对象(Map):键值对的集合 k: v:在下一行来写对象到的属性何止的关系,只需要注意缩进即可(对象还是k: v的方式来写)

对象的写法:

1.常规写法
friends:
   lastName: zhangsan
   age: 20
   
2.行内写法
friends: {
   lastName: zhangsan,age: 20}
  • 数组(List、Set):一组按次序排列的值
    1. 使用-短横线表示数组中的一个元素
1.常规写法
pets:
 - cat
 - dog
 - pig
2.行内写法
pets: [cat,dog,pig]
  • 复合结构:是以上写法的任意组合,它们之间是可以互相嵌套的。

  • 字面量(普通的值:数字、字符串、布尔值、日期):单个的、不可再分的值 k: v: 字面量直接写,字符串默认是不用加单引号或双引号。

    • “”:双引号会转义字符串里边的特殊字符,特殊字符会作为本身的意思,如在字符串中加入\n则会换行。
    • ‘’:单引号的话就不会对特殊字符转义,输出的是原始字符串。
    • 默认是不用引号的。
    • 字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格
  • 文档

    • 多个文档使用---隔开。

注意:Spring Boot使用的是snakeyaml解析yml文件的。

2.3 YAML配置文件值注入实战

需求说明:
  • 定义两个实体类,使用yaml配置类属性信息,并使用springboot单元测试的方式输出相关内容。
  1. 引入配置文件处理器,可以使得我们写配置能够有提示。
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-configuration-processor</artifactId>
   <optional>true</optional>
</dependency>
  1. 创建两个实体类Person、Dog
package com.to1024.springboot_002_yaml.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
* 将配置文件中的属性值,映射到这个组件中
*@ConfigurationProperties(prefix = "person"):用于告诉Spring Boot将本类中的所有属性和配置文件中的相关配置进行绑定
*prefix = "person":与配置文件中的属性一一对应
*
* 只有当这个类被@Component注解时,他才能使用容器提供的@ConfigurationProperties功能
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
   
   private String lastName;
   private Integer age;
   private boolean boss;
   private Date birth;
   private Map<String,String> maps;
   private List<String> lists;
   private Dog dog;

   public String getLastName() {
   
       return lastName;
   }

   public void setLastName(String lastName) {
   
       this.lastName = lastName;
   }

   public Integer getAge() {
   
       return age;
   }

   public void setAge(Integer age) {
   
       this.age = age;
   }

   public boolean isBoss() {
   
       return boss;
   }

   public void setBoss(boolean boss) {
   
       this.boss = boss;
   }

   public Date getBirth() {
   
       return birth;
   }

   public void setBirth
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值