版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/java_cxrs/article/details/89416401
Spring Boot 除了使用properties文件配置外,还可以用yaml格式的文件代替。
yaml介绍
YAML是一种简洁的非标记语言。YAML以数据为中心,使用空白、缩进,分行组织数据,从而使得表示更加简洁易读。 Spring Boot 官方推荐使用yaml文件
YAML语法格式:
标准格式:key:(空格)value
yaml文件的后缀为 .yml 例如文件名为:application.yml
- 下面是一个yaml格式的文档示例
environments:
dev:
url: https://dev.example.com
name: Developer Setup
prod:
url: https://another.example.com
name: My Cool App
- 上面所显示的文档示例对应的properties文件内容如下
environments.dev.url=https://dev.example.com
environments.dev.name=Developer Setup
environments.prod.url=https://another.example.com
environments.prod.name=My Cool App
- yaml如果表示一个数组索引格式的文件,如下:
my:
servers:
- dev.example.com
- another.example.com
- 对应的properties文件内容如下
my.servers[0]=dev.example.com
my.servers[1]=another.example.com
下面我们把上一章节的application.properties文件用yml文件代替内如如下
server:
port: 8080
servlet:
context-path: /
tomcat:
uri-encoding: UTF-8
spring:
http:
encoding:
charset: UTF-8
person:
name: username
password: 123456
address: 127.0.0.1
扫描二维码关注公众号,回复:
6117680 查看本文章
那么还有个问题,我们怎么去加载自定义的配置信息呢?和我们获取application.properties内容一样
在属性值对应的实体Bean中配置@ConfigurationProperties
package org.learn.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="person")
public class PersonBean {
private String name;
private String password;
private String address;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
package org.learn.controller;
import org.learn.bean.PersonBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PersonController {
@Autowired
PersonBean person;
@RequestMapping("/")
String home() {
String str = person.getName()+"_"+person.getPassword()+"_"+person.getAddress();
return str;
}
}
这样我们通过controller就可以获取到值了