zoukankan      html  css  js  c++  java
  • SpringBoot系列之配置文件加载位置

    SpringBoot系列之配置文件加载位置

    SpringBoot启动会自动扫描如下位置的application.properties或者application.yml文件作为Springboot的默认配置文件

    • project:/config/(项目根目录下面config文件夹里的配置文件)
    • project:/(项目根目录下面的配置文件)
    • classpath:/config/(Resources文件夹下面config文件夹里的配置文件)
    • classpath:/(Resources文件夹下面的配置文件))

    如图所示,在resources文件夹下面建个config文件夹,往里面丢个application.properties配置文件,再往resources根目录下面也丢个application.properties文件
    在这里插入图片描述
    先往resources根目录下面的application.properties配置文件写几个参数:

    # 配置端口为8070
    server.port=8070
    # 配置contextPath
    server.servlet.context-path= /example
    

    再往config文件夹下面的application.properties配置文件添加加个参数:

    # 匹配端口为8081
    server.port=8081
    

    启动一下项目,在Springboot项目的控制台可以看到打印输出
    在这里插入图片描述
    当然你想写个控制类测试一下也是可以的

    package com.example.springboot.properties.conroller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @GetMapping(value = {"/hello","/sayHello"})
        public String sayHello(){
            return "hello world!";
        }
    }
    
    

    ok,启动项目,经过验证访问 http://localhost:8081/example/hello 才是可以访问的,8080端口不可以访问,而context-path: /example是配在resources根目录下面的,这个属性配置没被覆盖,其端口配置就被覆盖了,所以我们可以得出,Springboot项目启动时是会先读取config文件夹里的配置文件,因为只配了一个端口的,所以就只读端口的,接着,低优先级的application.properties没被覆盖的配置属性还是会被读取的,所以我们也可以说配置文件的读取存在互补配置的特性

    ok,继续验证,如图所示:
    在这里插入图片描述
    按照同样的方式,验证放在4个位置的application.properties读取优先级,通过实践验证,可以得出:
    Springboot项目启动时会按照如下顺序由高到低读取配置,高优先级的属性会覆盖低优先级的属性,属性文件之间存在互补配置的特性

    • project:/config/(项目根目录下面config文件夹里的配置文件)
    • project:/(项目根目录下面的配置文件)
    • classpath:/config/(Resources文件夹下面config文件夹里的配置文件)
    • classpath:/(Resources文件夹下面的配置文件))

    ok,这里介绍了Springboot项目启动时属性文件的读取顺序,当然我们也是可以通过spring.config.location来指定默认配置文件的位置

    可以将参数加在启动时候的虚拟机参数里:
    代码 -Dspring.config.location=D:/application.properties
    在这里插入图片描述
    项目启动参数里加也是可以的
    在这里插入图片描述
    丢在application.properties配置文件里?
    在这里插入图片描述
    很显然是不起效的,因为一个配置文件,肯定不能指定其它配置文件
    在这里插入图片描述
    java -jar命令也是可以的,首先要maven package
    在这里插入图片描述
    java -jar springboot-properties-config-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties

    idea有些版本是有teminal命令台,可以直接在里面敲命令,没有的话就只能通过cmd直接敲命令的

  • 相关阅读:
    linux开机自启动服务优化设置命令
    yum网络源配置
    CentOS 6一键系统优化 Shell 脚本
    linux系统下find删除目录下除一文件外的所有文件
    linux系统时间同步
    Memcached 查询stats及各项状态解释
    VMWARE 12安装Tools
    win8及以上2012 R2,virtualbox 5.0.20安装centOS6以上各种注意事项
    HTTP的上传文件实例分析
    java中类加载顺序(深入Java)
  • 原文地址:https://www.cnblogs.com/mzq123/p/11830422.html
Copyright © 2011-2022 走看看