什么是YAML?

https://www.cnblogs.com/mindzone/p/12849789.html


复合结构的语法

一个标配JavaBean

public class Person {

    private String name;
private Integer age;
private Boolean gender;
private Date birth;
private Map<String,Object> map;
private List<Object> list;
private Dog puppy;
// 省略 GETTER & SETTER & ToString
}

组合的DogBean

public class Dog {

    private String name;
private Integer age;
// 省略 GETTER & SETTER & ToString
}

我们的YAML文件应该这样编写:

person:
name: 杰哥
age: 18
gender: true
birth: 1995/09/05
map:
k1: v1
k2: [1,3,4,7,9]
k3: true
k4: 3.14
language: [C,C++,C#,Java]
puppy:
name: 二哈
age: 3

如何在SpringBoot中绑定JavaBean?

1、打上@ConfigurationProperties注解和前缀属性

2、SpringBoot 配置注解处理器 没有配置?

我们点开【Open Documentation】查看

版本太高都没有文档???

索性更改文档查看【只要修改发行版本】

https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/html/configuration-metadata.html#configuration-metadata-annotation-processor

官方告诉我们需要导入这个依赖才能识别我们的yaml文件配置:

经过测试,并不需要,这个提示警告可以忽视不用管

3、打上@Componenet注解

【否则初始化异常失败】

4、我们如何证明yaml配置注入到了实例中?

【使用测试类】

运行查看结果

Person{name='杰哥', age=18, gender=true, birth=Tue Sep 05 00:00:00 CST 1995, map={k1=v1, k2={0=1, 1=3, 2=4, 3=7, 4=9}, k3=true, k4=3.14}, list=[C, C++, C#, Java], puppy=null}

由于狗类没有装配注解,顾打印为null

狗类没有单独的写在yaml文件中,因为是组合在Person中的

我们只需要注册到容器中即可

查看人对象的结果


使用SpringBoot的Properties配置来进行编写

警告!在使用properties配置中文字符内容时,请先查看编码类型

如果是GBK,很用可能在IDEA控制台输出的字符造成乱码问题

建议全部改为UTF-8,并且,勾选自动适应

配置编写:

person.name = 张三
person.age = 18
person.birth = 1998/09/08
person.gender = false
person.map.k1 = 值1
person.map.k2 = 值2
person.list = Java,C,C++,C#
person.puppy.name = 一条舔狗
person.puppy.age = 1

【注意,这里我并没删除在yml文件中的配置】

打印结果是以properties为准的参数

Person{name='张三', age=18, gender=false, birth=Tue Sep 08 00:00:00 CST 1998, map={k1=值1, k2=值2, k3=true, k4=3.14}, list=[Java, C, C++, C#], puppy=Dog{name='一条舔狗', age=1}}

也就是说SpringBoot优先使用properties的配置注入参数


代替@ConfigurationProperties的注入方法

也可以使用@Value在类中硬编码注入参数

@Value配合SPEL表达式来注入【这是来自Spring的注解】

可以支持的方式【字面量、${} 配置注入,#{}SPEL表达式】

现在我们这样使用

把配置读取的注解注释掉

直接使用@Value来注入

测试


@Value & @ConfigurationProperties的区别?

【以下简称 @V & @CP】

- @CP 用于批量注入,支持松散绑定,不支持SPEL,支持JSR303校验,支持复杂类型封装

- @V 用于单个注入,不支持松散绑定,支持SPEL,不支持JSR303校验,不支持复杂类型封装

- properties 不支持SPEL表达式

- yaml 支持SPEL表达式


【Relaxed Binding】什么是松散绑定?

例如我们的Bean属性标识符是小驼峰:

private String lastName;

@CP注解在配置文件中去匹配这个标识符的时候

可以匹配这些规则的标识符:

- person.lastName

- person.last-name

- person.last_ame

- PERSON_LAST_NAME


JSR303注入校验

详细翻阅的校验注解种类参考:

https://www.ibm.com/developerworks/cn/java/j-lo-jsr303/

https://blog.csdn.net/qq_28867949/article/details/78922520

JSR303 对 @Value注入的校验是无效的,再三提示!!!

【SpringBoot】04 初探YAML与配置的更多相关文章

  1. SpringBoot系列之YAML配置用法

    1.全局配置 SpringBoot的全局配置文件有两种: application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值,主要是 ...

  2. 【Springboot】Springboot整合Jasypt,让配置信息安全最优雅方便的方式

    1 简介 在上一篇文章中,介绍了Jasypt及其用法,具体细节可以查看[Java库]如何使用优秀的加密库Jasypt来保护你的敏感信息?.如此利器,用之得当,那将事半功倍.本文将介绍Springboo ...

  3. 【SpringBoot】SpringBoot配置文件及YAML简介(三)

    SpringBoot配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; application.properties application.yml 配置文件的作用:修改Spr ...

  4. SpringBoot:配置文件及自动配置原理

    西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...

  5. springboot核心技术(一)-----入门、配置

    Hello World 1.创建一个maven工程:(jar) 2.导入spring boot相关的依赖 <parent> <groupId>org.springframewo ...

  6. SpringBoot基础系列之自定义配置源使用姿势实例演示

    [SpringBoot基础系列]自定义配置源的使用姿势介绍 前面一篇博文介绍了一个@Value的一些知识点,其中提了一个点,@Value对应的配置,除了是配置文件中之外,可以从其他的数据源中获取么,如 ...

  7. Angularjs学习---ubuntu12.04中karma安装配置

    Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结   karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然 ...

  8. Desktop Ubuntu 14.04LTS/16.04科学计算环境配置

    Desktop Ubuntu 14.04LTS/16.04科学计算环境配置 计算机硬件配置 cpu i5 6代 内存容量 8G gpu GTX960 显存容量 2G(建议显存在4G以上,否则一些稍具规 ...

  9. 在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法

    在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法   对于,在Linux系统下做图像识别,不像在windows下面我们可以利用Matlab中的图像工具箱来实现,我们必须借助Ope ...

  10. Ubuntu16.04安装Redis并配置

    Ubuntu16.04安装Redis并配置 2018年05月22日 10:40:35 Hello_刘 阅读数:29146   Ubuntu16.04安装Redis并配置 1):安装: 1:终端命令下载 ...

随机推荐

  1. 使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串

    安装1.0.10以及以上版本的 Wesky.Net.OpenTools 包   包内,该功能的核心代码如下: 自定义属性: 实体类JSON模式生成器:   使用方式:引用上面的1.0.10版本或以上的 ...

  2. 可观测性平台夜莺开源项目发布V6正式版!

    夜莺开源项目在2023.7月底发布了V6版本,这个版本开始,项目目标不止于做一款开源监控系统,而是要做一款开源可观测性平台,不过路漫漫其修远兮,初期只是把日志数据源引入并完成了基本的可视化,后续会着力 ...

  3. 阿里云OSS图片上传和显示注意点

    1. java.lang.IllegalArgumentException: The object key "/image-业务名称/20230818/20230818-订单号参数-acci ...

  4. 『手撕Vue-CLI』完善提示信息

    前言 经过『手撕Vue-CLI』自动安装依赖,已经实现了自动安装依赖的功能. 然而,虽然项目已复制并安装依赖,但其提示信息并不够友好,于是我试着去运行了一下vue create,发现其提示信息是这样的 ...

  5. 哎,被这个叫做at least once的玩意坑麻了。

    你好呀,我是歪歪. 前几天遇到一个生产问题,同一个数据在数据库里面被插入了两次,导致后续处理出现了一些问题. 当时我们首先检讨了自己,没有做好幂等校验.甚至还发现了一个低级错误:对应的表,针对订单号, ...

  6. Azure Storage Blob 启用sftp协议支持

    背景 我这边需要给前端同学一个上传静态文件的地方,比如js.css.图片.icons等等,前端上传后直接在项目中:我这边用的是Azure Storage blob:为了单独分配权限,我这边打算启用SF ...

  7. Oh-My-Zsh 提示符只显示当前路径,不需要修改主题文件

    我真是服了.就这么一个简单的小问题我在网上找了一个多小时,一大堆 CSDN 文章都是抄 同一篇博客 的教程,所有的博客都要我去把 ~/.oh-my-zsh/themes/*.zsh-theme 文件里 ...

  8. 交互式转化批处理工具 expect

    交互式转化批处理工具 expect expect中相关命令 spawn 启动新的进程 expect 从进程接收字符串 send 用于向进程发送字符串 interact 允许用户交互 exp_conti ...

  9. HarmonyOS SDK助力中国建设银行探索金融领域创新场景

    今年年初,中国建设银行(以下简称建行)手机银行首批适配HarmonyOS NEXT,并高效实现其应用的核心功能迁移.同时,建行手机银行在HarmonyOS SDK的加持下,充分发挥鸿蒙原生应用在原生智 ...

  10. idea远程debug(物理机、docker、k8s)

    IDEA远程DEBUG 1:物理机部署的Springboot项目远程DEBUG 1.1:idea配置 点击"Edit Configurations",再点击+,选择Remote, ...