一)yml和properties配置文件簡介
SpringBoot在啓動時,可支持文件名後綴格式爲yml或properties的配置文件。兩者只是編寫格式有點差異性。
application.yml文件:有層級關係,當相同配置前綴較多時,可減少代碼量
server:
port: 9000
class:
method:
firstmethod: fnA
secondmethod: fnB
params:
paramA: defaultA
paramB: defaultB
application.properties文件:key=value配置,優點是配置清晰,可一眼看出具體配置的value
server.port=9000
class.method.firstmethod=fnA
class.method.secondmethod=fnB
class.params.paramA=defaultA
class.params.paramB=defaultB
注:在yml或properties配置文件中,一定不能有Tab符號的空格,否則SpringBoot啓動不了。
二)SpringBoot Jar包準備工作
第一步:在pom.xml文件中引入SpringBoot的Jar,並導入Web開發的Jar,加入一個maven插件,並指定SpringApplication.run啓動的mainClass入口
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.oysept</groupId>
<artifactId>second_springboot</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!--SpringBoot Jar-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 支持web開發的 jar-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!--maven插件, 將項目打包成Jar-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--指定SpringBoot啓動是的main方法入口-->
<mainClass>com.oysept.ServerApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
第二步:使用application.yml或application.properties文件,隨意指定使用一種即可
第三步:創建一個SpringApplication.run運行入口
package com.oysept;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
第四步:創建一個Controller類,作爲測試類
@RestController:此註解將類註冊成一個控制層類
@RequestMapping:路由配置,即訪問地址
@Value("${}"):指定加載的配置key
package com.oysept.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
@RestController
public class TestController {
@Value("${class.params.paramA}")
private String paramA;
@Value("${class.params.paramB}")
private String paramB;
// http://localhost:9000/test/config
@RequestMapping(value="/test/config")
public String config() {
System.out.println("paramA: " + this.paramA);
System.out.println("paramB: " + this.paramB);
return "Time: "+ LocalDateTime.now() +", 外部配置參數: " + this.paramA + " :: " + this.paramB;
}
}
第五步:打包成Jar
打開cmd命令窗口,用cd命令切換到項目下,和pom.xml文件同層級,然後執行mvn install命令(如包mvn命令不存在,肯定是環境變量配置不正確,需檢查一下maven的環境變量是否配置)
回車之後,打印如下,表示Jar打包成功
如果是用idea編輯器(idea編輯器本身提供cmd命令窗口),刷新一下項目,項目結構圖如下:
三)測試yml配置文件加載順序
1、先切換到target文件夾下,然後直接用java -jar second_springboot-1.0-SNAPSHOT.jar命令啓動Jar,該方式加載的是項目下src/java/resources/application.yml配置文件
打開瀏覽器,在地址欄輸入:http://localhost:9000/test/config
2、在target文件夾下,創建一個application.yml文件,並修改部分配置參數,然後再啓動Jar
server:
port: 9000
class:
method:
firstmethod: fnA
secondmethod: fnB
params:
paramA: applicationA
paramB: applicationB
target文件夾,已把多餘的文件先刪除了,只留下有用的Jar和application.yml配置
執行java -jar second_springboot-1.0-SNAPSHOT.jar命令,打印效果圖:
3、在target文件夾下,創建一個config文件夾,然後在config文件下創建一個application.yml文件,並修改部分配置參數,然後再啓動Jar
server:
port: 9000
class:
method:
firstmethod: fnA
secondmethod: fnB
params:
paramA: applicationConfigA
paramB: applicationConfigB
執行java -jar second_springboot-1.0-SNAPSHOT.jar命令,打印效果圖:
4、直接使用命令的方式啓動Jar
命令:java -jar second_springboot-1.0-SNAPSHOT.jar --class.params.paramA=11111, --class.params.paramB=22222
打開瀏覽器,在地址欄輸入:http://localhost:9000/test/config
四)總結
SpringBoot配置文件加載順序從高到低如下:
1、啓動命令指定參數,多個用逗號分割
2、Jar包同層級(一個/config當前目錄的子目錄),config/application.yml
3、Jar包同層級(當前目錄),application.yml
4、Jar包內(類路徑根),src/main/resources/application.yml
注:如果您不想將命令行屬性添加到中Environment,則可以使用禁用它們SpringApplication.setAddCommandLineProperties(false)。
識別二維碼關注個人微信公衆號
本章完結,待續,歡迎轉載!
本文說明:該文章屬於原創,如需轉載,請標明文章轉載來源!