前言

我们知道java 因为历史的原因,一直有一个配置地狱的痛点。那么如何解决掉它呢?

spring boot 是一柄利器,但是呢,还是要配置。



看来配置的避免不了的了。

那么如何可以减轻这种痛苦呢?

yaml 就是一个减轻的利器。

正文

yaml 是什么呢? yaml ain't markup language

这是什么意思呢?解释的不是一门标记语言。但是无论它怎么说,他的确是作为标记语言存在的。

那么这个yaml配置放在哪里里?

放在这下面哈。

先来熟悉一下yaml语法吧,这里只是做一些我自己经验。

下面是菜鸟的,我认为起码应该熟悉这个。

基本语法

    大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
'#'表示注释 数据类型 YAML 支持以下几种数据类型: 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值

1.key:value

string 类型默认不用加"" 或者 ''

这种类型的话:"" 会转义,'' 不会转义。

  1. 对象的时候:
friend:
lastname: bob
firstname: z

如果是简单的对象建议这样写:friend:{ lastname:bob,firstname:z}

2.这里介绍一下数组,支持两种写法:

sex
- boy
- girl

如果是简单的数组。那么我建议这样写: sex:[boy,girl]

yaml 读取

yaml 除了这样写能让spring boot读取到,这是系统自动会去读取server。

那么我们自己定义的配置该如何读取?

person 类

package com.axm.demo.bean;

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
*/
@Component
@ConfigurationProperties(prefix ="person")
public class Person {
private String lastName;
private Integer age;
private boolean boss;
private Date birth; private Map<String,Object> maps;
private List<Object> lists; private Dog dog; public String getLastName() {
return lastName;
} @Override
public String toString() {
return "Person{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", boss=" + boss +
", birth=" + birth +
", maps=" + maps +
", lists=" + lists +
", dog=" + dog +
'}';
} 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(Date birth) {
this.birth = birth;
} public Map<String, Object> getMaps() {
return maps;
} public void setMaps(Map<String, Object> maps) {
this.maps = maps;
} public List<Object> getLists() {
return lists;
} public void setLists(List<Object> lists) {
this.lists = lists;
} public Dog getDog() {
return dog;
} public void setDog(Dog dog) {
this.dog = dog;
}
}

dog 类

package com.axm.demo.bean;

public class Dog {
private String name;
private Integer ages; @Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", ages=" + ages +
'}';
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAges() {
return ages;
} public void setAges(Integer ages) {
this.ages = ages;
}
}

那么在yml中这样写:

person:
lastName: zhangsan
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaolu
dog:
name: 小狗

这里需要配置的是person中增加注解:

@Component
@ConfigurationProperties(prefix ="person")

pom.xml 中增加:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

测试其是否配置成功:

package com.axm.demo;

import com.axm.demo.bean.Person;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class)
@SpringBootTest
class DemoApplicationTests {
@Autowired
Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}

spring boot yaml 配置[三]的更多相关文章

  1. 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程

    转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...

  2. Spring Boot 系列(三)属性配置&自定义属性配置

    在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配 ...

  3. Springboot 系列(三)Spring Boot 自动配置原理

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 关于配置文件可以配置的内容,在 Spring ...

  4. Spring Boot教程(三十二)多数据源配置与使用

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...

  5. Spring Boot教程(三十二)多数据源配置与使用(1)

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...

  6. 玩转spring boot——properties配置

    前言 在以往的java开发中,程序员最怕大量的配置,是因为配置一多就不好统一管理,经常出现找不到配置的情况.而项目中,从开发测试环境到生产环境,往往需要切换不同的配置,如测试数据库连接换成生产数据库连 ...

  7. Spring boot将配置属性注入到bean类中

    一.@ConfigurationProperties注解的使用 看配置文件,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.c ...

  8. Spring boot将配置属性注入到bean 专题

    https://blog.csdn.net/wangmx1993328/article/details/81002901 Error starting ApplicationContext. To d ...

  9. Spring Boot自动配置原理(转)

    第3章 Spring Boot自动配置原理 3.1 SpringBoot的核心组件模块 首先,我们来简单统计一下SpringBoot核心工程的源码java文件数量: 我们cd到spring-boot- ...

  10. Spring Boot自动配置原理与实践(二)

    前言 在之前的博文(Spring Boot自动配置原理与实践(一))中,已经介绍了Spring boot的自动配置的相关原理与概念,本篇主要是对自动配置的实践,即自定义Starter,对原理与概念加深 ...

随机推荐

  1. C++ //vector 容器构造 vector赋值操作 vector 容量大小 vector插入和删除 //vector数据存取 vector互换容器 vector预留空间

    1 //vector 容器构造 vector赋值操作 vector 容量大小 vector插入和删除 2 //vector数据存取 vector互换容器 vector预留空间 3 #include&l ...

  2. vmware完全卸载 防止出现各种问题治标不治本

    首先打开系统盘根目录,搜索" VMware ",把搜到的都删掉,去控制面板那里卸载掉VMware 打开管理(右键"我的电脑"),管理打开设备管理器," ...

  3. set中的erase使用的一个错误

    如果在遍历set的时候去erase很容易出事 事故代码: multiset<int>a; for(auto it=a.begin();it!=a.end();it++){ a.erase( ...

  4. 2.4g无线私有协议透传方案特色梳理

    为什么?  在2.4G这个频段,的确有待你拥挤,有提供高速上网的wifi,有提供短距离数据和云音乐传输的bt,还要各种xx的东西.在wifi和bt无法覆盖的领域,又出来一个2.4G私有协议传输芯片,这 ...

  5. RunOnWeb - 创建新协议,支持html调用本地可执行文件,支持浏览器互相调用

    浏览器调用 exe ?    Yes!  谷歌 Chrome 启动微软 Edge ?     Yes! RunOnWeb 协议 创建新协议,支持html调用本地可执行文件,支持浏览器互相调用 [最新版 ...

  6. 01.Android崩溃Crash封装库

    目录介绍 01.该库具有的功能 02.该库优势分析 03.该库如何使用 04.降低非必要crash 05.异常恢复原理 06.后续的需求说明 07.异常栈轨迹原理 08.部分问题反馈 09.其他内容说 ...

  7. springboot 在 yaml 文件中读取 pom 文件的 properties

    如果没有其他配置,只能读取 yaml 文件所在模块下 和 父级模块的 pom 的 properties,以下是配置: <properties> <revision>1.0< ...

  8. PLC与上位机传递数据

    1.我这里使用的是HslCommunication 假如传递的是word类型,PLC以16进制封装数组,它有预留,我扩充 PLC博图上是 word[5] 上位机接收 ushort[] Data1=ne ...

  9. 记录--post为什么会发送两次请求?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在前段时间的一次面试中,被问到了一个如标题这样的问题.要想好好地去回答这个问题,这里牵扯到的知识点也是比较多的. 那么接下来这篇文章我们就 ...

  10. C# 日志监控软件 基于 FileSystemWatcher

    效果: 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...