Spring Boot配置文件的使用
Spring Boot配置文件有两种书写格式,一种是.properties结尾,一种是.yaml结尾的。
.properties配置文件
新建项目时候该文件已经帮我们创建,但是为一个空文件
我们可以打开文件配置修改如下
生成一个随机字符
#生成一个随机字符
mx.secret=${random.secret}
在controller里获取该值
@RestController
@RequestMapping("/index")
public class IndexController {
@Value(value="${mx.secret}")
private String secret;
@RequestMapping
public String index() {
return "Hello World";
}
@RequestMapping("get")
public Map<String, String> get(@RequestParam String name) {
Map map = new HashMap<>();
map.put("name", name);
map.put("address", "北京丰台");
map.put("secret", secret);
return map;
}
}
打开浏览器访问测试地址
写一个固定引用
mx.name=www.example.mx
mx.description=${mx.name} is good
在controller中获取该属性
@RestController
@RequestMapping("/index")
public class IndexController {
@Value(value="${mx.secret}")
private String secret;
@Value(value="${mx.description}")
private String description;
@RequestMapping
public String index() {
return "Hello World";
}
@RequestMapping("get")
public Map<String, String> get(@RequestParam String name) {
Map map = new HashMap<>();
map.put("name", name);
map.put("address", "北京丰台");
map.put("secret", secret);
map.put("description", description);
return map;
}
}
打开浏览器访问测试地址
修改端口、时间格式、时区
由于Spring Boot默认时区设置为美国洛杉矶,会导致我们输出时间不对
#端口设置
server.port=8090
#日期格式化
spring.jackson.date-format=yyyy-MM-dd HH-mm-ss
#时区
spring.jackson.time-zone=GMT+8
在controller中获取属性
@RestController
@RequestMapping("/index")
public class IndexController {
@Value(value="${mx.secret}")
private String secret;
@Value(value="${mx.description}")
private String description;
@RequestMapping
public String index() {
return "Hello World";
}
@RequestMapping("get")
public Map<String, String> get(@RequestParam String name) {
Map map = new HashMap<>();
map.put("name", name);
map.put("address", "北京丰台");
map.put("secret", secret);
map.put("description", description);
return map;
}
@RequestMapping("find/{id}/{name}")
public User find(@PathVariable String id, @PathVariable String name) {
User user = new User();
user.setAge(99);
user.setId(id);
user.setName(name);
user.setDate(new Date());
return user;
}
}
打开浏览器访问测试地址
可以看到端口已经被修改成功.
Spring Boot .properties多配置文件使用
新增两个配置文件,分别为application-dev.properties和application-test.properties
分别配置如下
#生成一个随机字符
mx.secret=${random.secret}
mx.name=www.example.mx
mx.description=${mx.name} is good
#端口设置
server.port=8095
spring.jackson.date-format=yyyy-MM-dd HH-mm-ss
spring.jackson.time-zone=GMT+8
#生成一个随机字符
mx.secret=${random.secret}
mx.name=www.example.mx
mx.description=${mx.name} is good
#端口设置
server.port=8090
spring.jackson.date-format=yyyy-MM-dd HH-mm-ss
spring.jackson.time-zone=GMT+8
然后修改application.properties配置增加如下代码
spring.profiles.active=test
重启项目,发现已经使用application-test.properties中的配置.同理修改为dev则使用application-dev.properties中的配置
我们也可以在命令行中运行参数
1.首先将项目打包
2.右键打开命令行,输入命令如下
java -jar .\spring-boot-0.0.1-SNAPSHOT.jar
3.此时运行的是application-test.properties的配置
4.我们也可以运行如下命令
java -jar .\spring-boot-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
5.此时运行的是application-dev.properties的配置
.yaml配置文件
可以自己新建一个.yaml文件如下
配置格式如下
#生成一个随机字符
mx:
secret: ${random.secret}
name: www.example.mx
description: ${mx.name} is good
#端口设置
server:
port: 8081
spring:
jackson:
date-format: yyyy-MM-dd HH-mm-ss
time-zone: GMT+8
打开浏览器访问测试地址
效果其实是一样的,.yaml使得写法更简洁
Spring Boot .yaml多配置文件使用
修改配置文件如下,.yaml可以在一个文件下使用多种配置,用---
隔开:
#生成一个随机字符
mx:
secret: ${random.secret}
name: www.example.mx
description: ${mx.name} is good
#端口设置
server:
port: 8081
spring:
profiles:
active: test
jackson:
date-format: yyyy-MM-dd HH-mm-ss
time-zone: GMT+8
---
spring:
profiles: test
server:
port: 8082
---
spring:
profiles: dev
server:
port: 8083
查看命令行,可以看到已经使用test的配置