Spring Boot中的yaml配置简介

一、yaml

spring boot 使用一个全局配置文件,是固定的。可以是application.xml或者application.yaml, 放在/resources或者/config的目录下

  • yaml:是一种标记性语言,以数据为中心,比xml和json更适合做配置文件
  • XML配置例子:
  <server>
       <port> 8081</port>
   </server>
  • yml配置例子:
     server:
        port: 8085
        path: /hello

2.yaml写法

参考语法: https://bitbucket.org/asomov/snakeyaml/wiki/Documentation#markdown-header-yamlsyntax
字面变量: 单个的,不可分的值(数字,字符串,布尔,日期)

对象,Map(key:value键值对):

person:
     name: tom
     age: 18
personMap:
     username: herry
     age: 20
person:{name: tom,age: 18}

数组:List,Set

ainamals:
 - dog
 - cat
 - snack
animals:[dog,cat,snack]

三、yaml测试

1.导入配置文件处理器,写配置的时候就有提示

		<!-- 导入文件处理器,配置文件进行绑定的时候,就会有提示-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

2.java bean

public class Dog {
 private String name;
 private Integer age;
 }
  /**
* 将配置文件中的每一个值,映射到这个组件中
*@ConfigurationProperties: 此注解表示告诉sprigboot将本类中的
*       所有属性和配置文件中相关配置进行一一绑定
*prefix = "person" :配置文件中的哪个进行绑定
*@Component: 只有是容器中的组件才会作用
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
 private String name;
 private Integer age;
 private Boolean boss;
 private Date birthday;

 private Map<String,Object> map;
 private List<Object> list;
 private Dog dog;
}

3.配置文件注入

application.yml

person:
    name: tom
    age: 17
    boss: true
    birthday: 2018/01/12
    map:
      k1: v1
      k2: v2
    list:
      - cat
      - fish
      - dog
    dog:
      name: goodboy
      age: 3

application.properties

#配置properties属性
# idea properties默认是utf-8
person.name=tim
person.age=16
person.boss=false
person.birthday=2014/11/23
person.map.k1=v1
person.map.k2=22
person.list=cat,dog,fish
person.dog.name=goodboy
person.dog.age=3

4.测试类,启动,观察控制台是否打印

/**
 * Spring boot 单元测试
 *
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootHelloworldQuickApplicationTests {

	@Autowired
	Person person;
	@Test
	public void contextLoads() {
		System.out.println(person);
	}
}

properties配置文件在idea中默认utf-8可能会乱码

  • 语法参考和校验地址:http://www.yaml.org/ https://nodeca.github.io/js-yaml/
  • 二、yaml语法规范

    1、yaml基本语法

  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格。空格来控制层级关系
  • k:(空格)v:表示一对键值对(空格必须有);
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 大小写敏感
  • k: v:字面直接来写
  • 字符串:
    默然不加上单引号或者双引号
    " ": 双引号不转义字符串中的特使字符,特殊字符会作自身表达的意思。如"李" 李四 \n 20岁" 输出:李四 换行 20岁
    ’ ’ : 单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据。如"李" 李四 \n 20岁" 输出:李四 \n 20岁
    • 档:多个文档用 - - - 隔开
  • 对象是key: value,用冒号分隔
  • 冒号后面用空格来分开键值
  •  
  • 行内写法:
  •  
  • - 表示数组中的一个元素
  • 数组和对象和组合使用
  •  
  • 行内写法
  •  
  •  
  •  
  •  
  •  
  •  

猜你喜欢

转载自blog.csdn.net/xulong5000/article/details/107409535