第四章:SpringBoot2.3.0 打包Jar,加載yml或properties配置文件順序

一)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)

 

識別二維碼關注個人微信公衆號

本章完結,待續,歡迎轉載!
 
本文說明:該文章屬於原創,如需轉載,請標明文章轉載來源!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章