SrpingBoot入门到入坟04-配置文件
Posted -qilin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SrpingBoot入门到入坟04-配置文件相关的知识,希望对你有一定的参考价值。
SpringBoot使用一个全局的配置文件,名称是固定,作用就是修改SpringBoot自动配置的默认值。
*application.properties
*application.yml
先看看两者的写法,以修改默认端口为例:
application.properties:
application.yml:
当然如果同时修改那么生效的是properties:
但是接下来讲的是yml语法:
YAML Ain‘t Markup Language;另一种标记语言,语法比较简单,一些规范如下:K:(空格) V;表示一对键值对,空格必须存在。
---使用缩进表示层级关系
---缩进时不允许使用Tab键,只允许使用空格
---大小写敏感
---缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
YAML支持三种数据结构:
---对象:键值对的集合
---数组:一组按次序排列的值
---字面量:单个的,不可再分的值
案列:
定义一个Dog类
package com.lql.quick.vo; /** * @author: lql * @date: 2019.11.16 * Description: */ public class Dog { private String name; private int age; @Override public String toString() { return "Dog{" + "name=‘" + name + ‘‘‘ + ", age=" + age + ‘}‘; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
再来定义一个Person类,定义一些需要的变量;
package com.lql.quick.vo; import java.util.Date; import java.util.List; import java.util.Map; /** * @author: lql * @date: 2019.11.16 * Description: * Created with IntelliJ IDEA */ public class Person { private String lastName; private Integer age; private Boolean boss; private Date birth; private Dog dog; private Map<String,Object> maps; private List<Object> lists; @Override public String toString() { return "Person{" + "lastName=‘" + lastName + ‘‘‘ + ", age=" + age + ", boss=" + boss + ", birth=" + birth + ", dog=" + dog + ", maps=" + maps + ", lists=" + lists + ‘}‘; } 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 getBoss() { return boss; } public void setBoss(Boolean boss) { this.boss = boss; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } 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; } }
在此之前在pom.xml文件中新增一个依赖:导入配置文件处理器,配置文件进行绑定就会有提示
<dependency> <groupId> org.springframework.boot </ groupId> <artifactId> spring-boot-configuration-processor </ artifactId> <optional> true </ optional> </ dependency>
接下来在yml文件中要表示出来:如下:
server:
port: 8083
person:
lastName: lql
age: 17
boss: false
birth: 2002/1/1
dog:
name: tom
age: 2
maps:
java: 1
php: 2
c: 3
lists:
- A
- B
- C
然后需要将配置文件的数据关联到Bean上,所以在Person上加上@ConfigurationProperties和@Component注解:
然后启动启动类,在自带的Spring测试类中测试,
在后控制台能顺利打印:
在.properties中的配置如下:(先注释掉yml)
person.age=18
person.birth=2011/1/12
person.boss=true
person.last-name=lql
person.dog.name=bob
person.dog.age=2
person.lists[0]=11
person.lists[1]=12
person.lists[2]=13
person.maps.java=1
person.maps.c=2
person.maps.php=3
测试结果也是可行的:
但是如果有中文则会出现乱码:
解决办法也很简单,只需要设置一下就行,具体看图
再次运行则没有问题了:
当然写完yml之后可以直接利用第三方转换成properties:反之也一样,都是可行的;
以上是关于SrpingBoot入门到入坟04-配置文件的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2从入门到入坟 | 配置文件篇:自定义类绑定的配置提示
Spring Boot 2从入门到入坟 | 配置文件篇:yaml语法详解
Spring Boot 2从入门到入坟 | 配置文件篇:yaml语法详解
Spring Boot 2从入门到入坟 | 自动配置篇:源码分析之自动配置流程
Spring Boot 2从入门到入坟 | 自动配置篇:源码分析之HttpEncodingAutoConfiguration自动配置类