springboot-使用yml格式进行配置的方法

一、前言springboot配置文件的格式,有两种方式,一种是properties,就是application.properties,另一种就是yml格式,application.yml两种方式是差不多的,默认是properties,yml格式看起来会很有层次感如图,下边两种形式的效果是相同的:二、application.yml注意事项不同等级用冒号隔开次等级的前面是空格,不能使用制表符(tab)冒号之后如果有值,那么冒号和值之间至少有一个空格(实际上紧贴着也不影响)要么用application.properties,要么用application.yml,不要同时存在,否则的话yml中书写的时候,idea编辑器可能没有补全功能了三、参考链接http://how2j.cn/k/springboot/...

July 9, 2019 · 1 min · jiezi

YAML语法简易入门

YAML 语法个人感觉这篇文档属于"搬运工"性质可以查看官方或者其他的博客资料,会有一大堆的内容YAML语言的设计参考了JSON,XML和SDL等语言。YAML 强调以数据为中心,简洁易读,编写简单。有意思的命名:AML全称是”YAML Ain’t a Markup Language”(YAML不是一种置标语言)的递归缩写。 在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种置标语言)。语法特点大小写敏感通过缩进表示层级关系禁止使用tab缩进,只能使用空格键 (个人感觉这条最重要)缩进的空格数目不重要,只要相同层级左对齐即可使用#表示注释支持的数据结构对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)纯量(scalars):单个的、不可再分的值双引号和单引号的区分双引号"":不会转义字符串里面的特殊字符,特殊字符作为本身想表示的意思。name: “123\n123”—————————输出: 123 换行 123如果不加引号将会转义特殊字符,当成字符串处理值的写法1.字符串使用”或”“或不使用引号value0: ‘hello World!‘value1: “hello World!“value2: hello World!2.布尔值true或false表示。3.数字12 #整数 014 # 八进制整数 0xC #十六进制整数 13.4 #浮点数 1.2e+34 #指数 .inf空值 #无穷大4.空值null或~表示5.日期使用 iso-8601 标准表示日期date: 2018-01-01t16:59:43.10-05:00在springboot中yaml文件的时间格式 date: yyyy/MM/dd HH:mm:ss6.强制类型转换(了解)YAML 允许使用个感叹号!,强制转换数据类型,单叹号通常是自定义类型,双叹号是内置类型。money: !!str123date: !Booleantrue内置类型列表!!int # 整数类型 !!float # 浮点类型 !!bool # 布尔类型 !!str # 字符串类型 !!binary # 也是字符串类型 !!timestamp # 日期时间类型 !!null # 空值 !!set # 集合 !!omap,!!pairs # 键值列表或对象列表!!seq # 序列,也是列表 !!map # 键值表7.对象(重点)Map(属性和值)(键值对)的形式: key:(空格)v :表示一堆键值对,空格不可省略。car: color: red brand: BMW一行写法car:{color: red,brand: BMW}相当于JSON格式:{“color”:“red”,“brand”:“BMW”}8.数组一组连词线开头的行,构成一个数组。brand: - audi - bmw - ferrari一行写法brand: [audi,bmw,ferrari]相当于JSON[“auri”,“bmw”,“ferrari”]9.文本块|:使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行value: | hello world!输出结果:hello 换行 world!+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。value: |hellovalue: |-hellovalue: |+hello输出:hello\n hello hello\n\n(有多少个回车就有多少个\n)注意 “|” 与 文本之间须另起一行>:使用 > 标注的文本内容缩进表示的块,将块中回车替换为空格,最终连接成一行value: > helloworld!输出:hello 空格 world!注意 “>” 与 文本之间的空格10.锚点与引用使用 & 定义数据锚点(即要复制的数据),使用 * 引用锚点数据(即数据的复制目的地)name: &a yamlbook: abooks: - java - a - python输出book: yaml 输出books:[java,yaml,python]注意引用部分不能追加内容配置文件注入数据/* * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; * prefix = “person”:配置文件中哪个下面的所有属性进行一一映射 * * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能; * */@Component //实例化@ConfigurationProperties(prefix = “person”)//yaml或者properties的前缀public class Person { private String name; private Integer age; private Boolean flag; private Date birthday; private Map<String,Object> maps; private List<Object> tempList; private Dog dog; //省略getter和setter以及toString方法我们可以导入配置文件处理器,以后编写配置就有提示了,@ConfigurationPropertiesIDE会提示打开在线的帮助文档,配置依赖如下:<!–导入配置文件处理器,配置文件进行绑定就会有提示–><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>application.yaml文件person: name: 胖先森 age: 18 flag: false birthday: 2018/12/19 20:21:22 #Spring Boot中时间格式 maps: {bookName: “西游记”,author: ‘吴承恩’} tempList: - 红楼梦 - 三国演义 - 水浒传 dog: dogName: 大黄 dogAge: 4在test中进行测试如下@RunWith(SpringRunner.class)@SpringBootTestpublic class Demo03BootApplicationTests { @Autowired private Person p1; @Test public void contextLoads() { System.out.println(p1); }}输出结果为:Person{name=‘胖先森’, age=18, flag=false, birthday=Wed Dec 19 20:21:22 CST 2018, maps={bookName=西游记, author=吴承恩}, tempList=[红楼梦, 三国演义, 水浒传], dog=Dog{dogName=‘大黄’, dogAge=4}}application.properties文件person123.name=刘备person123.age=20person123.birthday=2018/12/19 20:21:22person123.maps.bookName=水浒传person123.maps.author=罗贯中person123.temp-list=一步教育,步步为赢person123.dog.dogName=小白person123.dog.dogAge=5java代码修改前缀@Component //实例化@ConfigurationProperties(prefix = “person123”)//yaml或者properties的前缀public class Person { private String name; private Integer age; private Boolean flag; private Date birthday; private Map<String,Object> maps; private List<Object> tempList; private Dog dog; //省略getter和setter以及toString方法在test中进行测试如下@RunWith(SpringRunner.class)@SpringBootTestpublic class Demo03BootApplicationTests { @Autowired private Person p1; @Test public void contextLoads() { System.out.println(p1); }}输出结果为:Person{name=‘����’, age=20, flag=null, birthday=Wed Dec 19 20:21:22 CST 2018, maps={bookName=ˮ䰴�, author=�޹���}, tempList=[һ������, ����ΪӮ], dog=Dog{dogName=‘��’, dogAge=5}}属性文件中文乱码问题 ...

December 19, 2018 · 2 min · jiezi