springboot支持兩種配置文件
- application.properties
- application.yml(推薦yml)
在創建SpringBoot項目時默認使用的是application.properties
下面分別介紹一下這兩種配置方式:
一、application.properties這種方式
這種方式就是一般的properties文件的配置方式(key=value方式)
比如配置端口號和數據庫
#端口號,默認8080
server.port=80
#數據庫
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
那麼問題來了
如果配置項很多,我要找某一個配置項,那麼開發或者運維人員豈不是很麻煩
那麼接下來介紹一下application.yml配置方式
二、application.yml配置方式
1.先介紹下YAML:
YAML是一個可讀性高,用來表達數據序列化的格式。YAML 的配置文件後綴爲 .yml,這種格式和json很像,都是key: value格式,但是:後有空格
例如:
debug: true
2.YAML基本語法:
- 大小寫敏感
- 使用縮進表示層級關係
- 縮進不允許使用tab,只允許空格
- 縮進的空格數不重要,只要相同層級的元素左對齊即可
- '#'表示註釋
3.在SpringBoot中使用application.yml配置
在resources文件夾下創建application.yml文件,刪除application.properties文件
上面的配置項就變成了這樣
#端口號,默認8080
server:
port: 80
#數據庫
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
如果我要在代碼中獲取配置文件中自定義的數據的值該怎麼辦?
三、配置自定義數據
首先在配置文件中配置自定義數據
myconfig:
name: 張三
description: 歡迎
age: 24
show-advert: true
在代碼中使用@Value註解方式獲取
package com.shunli.myspringbootdemo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author shunli
* @描述:
* @create 2020/2/3
* @since 1.0.0
*/
@Controller
public class MyController {
@Value("${myconfig.name}")
private String name;
@Value("${myconfig.age}")
private int age;
@Value("${myconfig.description}")
private String description;
@Value("${myconfig.show-advert}")
private boolean showAdvert;
@RequestMapping("/out")
@ResponseBody
public String out(){
System.out.println(this);
return this.toString();
}
@Override
public String toString() {
return "MyController{" +
"name='" + name + '\'' +
", age=" + age +
", description='" + description + '\'' +
", showAdvert=" + showAdvert +
'}';
}
}
四、環境配置文件
在開發過程中,開發、測試、生產環境上配置文件不相同
- SpringBot可針對不同環境提供不同的Profile文件
- Profile文件的默認命名格式爲application-{env}.yml
- 使用spring.profiles.active選項來指定不同的profile
比如開發環境和測試環境的端口號,日誌配置等不相同。
新建兩個文件爲application-dev.yml和application-prd.yml
application-dev.yml文件內容
#端口號,默認8080
server:
port: 8080
debug: false
logging:
file:
path: /local/soft
name: myspringbootdemo.txt
application-prd.yml文件內容:
#端口號,默認8080
server:
port: 80
debug: false
logging:
file:
path: /local/soft
name: myspringbootdemo.txt
在application.yml文件中刪除其他配置項,使用spring.profiles.active選項來指定不同的profile
spring:
profiles:
active: dev
這樣在部署的時候就可以修改spring.profiles.active選項來切換配置文件