这里,我们来了解一下SpringBoot的常用配置。
一:配置文件类型及位置
SpringBoot的配置文件我们一般使用.yml文件(这个玩意儿有自动缩进,看着比较明显)。Yml文件在默认创建的SpringBoot框架中是没有的。需要我们自己创建。
它创建的位置可以有很多个(配置文件可以放在项目根目录、根目录下的config目录、resouce根目录、resource\config目录),这个和PHP框架中的配置文件就不同,PHP的配置文件是在指定的位置。
上边我们说了,.yml文件可以在很多位置创建。那必然是有读取先后顺序的。那具体的读取顺序是什么样子呢?我们在四个位置创建四个.yml文件,测试框架的配置文件读取顺序。四个.yml文件存放位置如下图所示:
读取顺序结果:
项目根目录下的config目录(8084) => 项目根目录(8082) => resource\config目录(8085)=> resouce根目录(8083)
在同级目录下.properties文件的读取优先级要大于.yml文件。
二:读取配置文件内容
读取配置文件有两种方式。我们先来尝试第一种
先在resouce根目录下的application.yml中添加如下配置:
server:
port: 8083
data-source:
url: https://guanchao.site
username: camellia
password: 123456
1 :通过注解@ConfigurationProperties读取配置文件
编写一个封装类读取配置文件的信息
该类需要被Spring容器管理
类中的属性与配置文件的属性一致
在类上添加注解@ConfigurationProperties(prefix="属性的前缀")
在\src\main\java\com\example\demo\demos目录下创建DataRecourse.java类文件,代码如下:
package com.example.demo.demos.web;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "data-source")
public class DataRecourse {
private String url;
private String username;
private String password;
public DataRecourse() {}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "DataRecourse{" +
"url='" + url + ''' +
", username='" + username + ''' +
", password='" + password + ''' +
'}';
}
}
在\src\main\java\com\example\demo\demos目录下创建DataRecourseController.java类文件,代码如下:
package com.example.demo.demos.web;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class DataRecourseController {
@Autowired
private DataRecourse data;
@RequestMapping("test")
public String test(){
System.out.println("UserController.test,data:"+data);
return null;
}
}
启动服务器,访问:http://localhost:8083/test
控制台输出:
UserController.test,data:DataRecourse{url='https://guanchao.site', username='camellia', password='123456'}
2 :通过@Value读取配置文件
这里我重新在\src\main\java\com\example\demo\demos目录下创建DataRecourseValue.java类文件,代码如下:
package com.example.demo.demos.web;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class DataRecourseValue
{
@Value("${data-source.url}")
private String url;
@Value("${data-source.username}")
private String username;
@Value("${data-source.password}")
private String password;
public DataRecourseValue() {}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "DataRecourse{" +
"url='" + url + ''' +
", username='" + username + ''' +
", password='" + password + ''' +
'}';
}
}
在\src\main\java\com\example\demo\demos目录下DataRecourseController.java文件中新建方法,代码如下:
@Autowired
private DataRecourseValue dataValue;
@RequestMapping("testValue")
public String testValue(){
System.out.println("UserController.test,data:"+dataValue);
return null;
}
启动服务器,访问:http://localhost:8083/testValue
控制台输出:
UserController.test,data:DataRecourse{url='https://guanchao.site', username='camellia', password='123456'}
.properties 文件的读取,也可以使用上方的配置。
三:读取列表
在.yml配置文件中,不仅可以配置字符串,也可以配置列表。具体怎么配置呢?如下所示:
data-source:
url: https://guanchao.site
username: camellia
password: 123456
strList:
- a
- b
- c
- d
对,你没看错,就是前面加一个 “-”即可。
配置完成了,接下来,我们测试一下读取,这里就不挖坑了,直接说,列表参数的读取只能使用通过注解@ConfigurationProperties读取配置文件的读取方式:
具体代码如下所示:
package com.example.demo.demos.web;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "data-source")
public class DataRecourse {
private String url;
private String username;
private String password;
// 列表参数
private List<String> strList;
public DataRecourse() {}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<String> getStrList() {
return strList;
}
public void setStrList(List<String> strList) {
this.strList = strList;
}
@Override
public String toString() {
return "DataRecourse{" +
"url='" + url + ''' +
", username='" + username + ''' +
", password='" + password + ''' +
", strList=" + strList +
'}';
}
}
controller文件:
@Autowired
private DataRecourse data;
@RequestMapping("test")
public String test(){
System.out.println("UserController.test,data:"+data);
return null;
}
启动服务器,在浏览器中访问:http://localhost:7091/test
控制台输出:
UserController.test,data:DataRecourse{url='https://guanchao.site', username='camellia', password='123456', strList=[a, b, c, d]}
有好的建议,请在下方输入你的评论。