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-配置文件的更多相关文章
- SrpingBoot入门到入坟03-基于idea快速创建SpringBoot应用
先前先创建Maven项目然后依照官方文档再然后编写主程序写业务逻辑代码才建立好SpringBoot项目,这样太过麻烦,IDE都支持快速创建,下面基于idea: 使用Spring Initializer ...
- SrpingBoot入门到入坟02-HelloWorld的细节和初始自动配置
关于SpringBoot的第一个HelloWorld的一些细节: 1.父项目 首先查看项目中的pom.xml文件 文件中有个父项目,点进去则: 它里面也有一个父项目,再点进去: 可以发现有很多的依赖版 ...
- SrpingBoot入门到入坟01-HelloWorld和SpringBoot打Jar包
第一个SpringBoot: 建立一个maven项目: 再pom.xml里面增加依赖: <?xml version="1.0" encoding="UTF-8&qu ...
- 深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!
一.ReentrantLock与AQS简介 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:Reentra ...
- nginx从入门到入坟
目录 1.nginx下载安装 2.启动命令 3.服务脚本 4.nginx目录说明 5.nginx配置文件 6.虚拟主机与域名配置和站点配置 6.1server_name配置规则 7.反向代理负载均衡配 ...
- testlib.h从入门到入坟
学了这么久OI连个spj都不会写真是惭愧啊... 趁着没退役赶紧学一波吧 配置 github下载地址 我是直接暴力复制粘贴的.. 然后扔到MingW的目录里 直接引用就好啦 基本语法 引用testli ...
- SpringBoot整合SpringData JPA入门到入坟
首先创建一个SpringBoot项目,目录结构如下: 在pom.xml中添加jpa依赖,其它所需依赖自行添加 <dependency> <groupId>org.springf ...
- 【Lucene3.6.2入门系列】第04节_中文分词器
package com.jadyer.lucene; import java.io.IOException; import java.io.StringReader; import org.apach ...
- WCF入门教程(五)配置文件
WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...
随机推荐
- 欢迎使用CSDN的markdown编辑器
以下是蒻鞫第一次打开CSDN-markdown编译器的温馨提示,感觉CSDN好贴心,不作任何用途,仅为纪念,若存在违法侵权行为,请联系留言,立即删除. List item 这里写 欢迎使用Markdo ...
- 1829:【02NOIP提高组】自由落体
#include<bits/stdc++.h> using namespace std; double h,s1,v,k,l; int n,ans; int main() { cin> ...
- c++ rapidjson读取json文件 解析
库:链接:https://pan.baidu.com/s/1UChrgqLPJxKopyqShDCHjg 密码:3yhz #include <iostream> #include < ...
- Ubuntu系统下安装完成tomcat进入管理页面
首先先启动tomcat cd /usr/local/tomcat8. ./bin/startup.sh 然后再打开浏览器 在地址栏中输入 http:/localhost:
- Codeforces Round #597 (Div. 2)
A - Good ol' Numbers Coloring 题意:有无穷个格子,给定 \(a,b\) ,按以下规则染色: \(0\) 号格子白色:当 \(i\) 为正整数, \(i\) 号格子当 \( ...
- python学习之模块:xlsxwriter
1.安装xlsxwriter模块 pip install xlsxwriter 2.使用 import xlsxwriter workbook = xlsxwriter.Workbook('hello ...
- 面试准备4——C++相关知识
指针和引用区别: (1)指针: 指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元: 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已. 如: int a=1;in ...
- ubuntu系统开机优化参数
date : 2019-06-20 14:34:48 author: headsen chen 临时设置: ulimit -n 1000000 永久设置: vim /etc/security/li ...
- Quartz.Net 学习随手记之03 配置文件
第一种方式:直接写入代码中 NameValueCollection properties = new NameValueCollection(); properties["quartz.sc ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_07-用户认证-认证服务查询数据库-解析申请令牌错误信息
1.2.5.4 解析申请令牌错误信息 当账号输入错误应该返回用户不存在的信息,当密码错误要返回用户名或密码错误信息,业务流程图如下: 修改申请令牌的程序解析返回的错误: 由于restTemplate收 ...