第四章: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入口



    4.0.0
    com.oysept
    second_springboot
    1.0-SNAPSHOT
    jar

    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.0.RELEASE
    

    
        UTF-8
    

    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

    
        
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                    com.oysept.ServerApplication
                
            
        
    

 

第二步:使用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打包成功

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第1张图片

如果是用idea编辑器(idea编辑器本身提供cmd命令窗口),刷新一下项目,项目结构图如下:

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第2张图片

 

三)测试yml配置文件加载顺序

1、先切换到target文件夹下,然后直接用java -jar second_springboot-1.0-SNAPSHOT.jar命令启动Jar,该方式加载的是项目下src/java/resources/application.yml配置文件

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第3张图片

打开浏览器,在地址栏输入:http://localhost:9000/test/config

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第4张图片

 

2、在target文件夹下,创建一个application.yml文件,并修改部分配置参数,然后再启动Jar

server:
  port: 9000

class:
  method:
    firstmethod: fnA
    secondmethod: fnB
  params:
    paramA: applicationA
    paramB: applicationB

target文件夹,已把多余的文件先删除了,只留下有用的Jar和application.yml配置

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第5张图片

执行java -jar second_springboot-1.0-SNAPSHOT.jar命令,打印效果图:

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第6张图片

 

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命令,打印效果图:

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第7张图片

 

4、直接使用命令的方式启动Jar

命令:java -jar second_springboot-1.0-SNAPSHOT.jar --class.params.paramA=11111, --class.params.paramB=22222

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第8张图片

打开浏览器,在地址栏输入:http://localhost:9000/test/config

第四章:SpringBoot2.3.0 打包Jar,加载yml或properties配置文件顺序_第9张图片

 

四)总结

SpringBoot配置文件加载顺序从高到低如下:

1、启动命令指定参数,多个用逗号分割

2、Jar包同层级(一个/config当前目录的子目录),config/application.yml

3、Jar包同层级(当前目录),application.yml

4、Jar包内(类路径根),src/main/resources/application.yml

注:如果您不想将命令行属性添加到中Environment,则可以使用禁用它们SpringApplication.setAddCommandLineProperties(false)

 

识别二维码关注个人微信公众号

本章完结,待续,欢迎转载!
 
本文说明:该文章属于原创,如需转载,请标明文章转载来源!

你可能感兴趣的:(SpringBoot2.3.0)