开发者

SpringBoot之如何指定配置文件启动

开发者 https://www.devze.com 2023-04-27 10:28 出处:网络 作者: luffylv
目录一、问题描述二、 SpringBoot如何指定配置文件启动1、pom.XML中配置2、配置配置文件3、验证三、分析问题四、解决问题4.1、修改pom.xml文件4.2、 android修改根配置文件4.3、配置类总结一、问题描述
目录
  • 一、问题描述
  • 二、 SpringBoot如何指定配置文件启动
    • 1、pom.XML中配置
    • 2、配置配置文件
    • 3、验证
  • 三、分析问题
    • 四、解决问题
      • 4.1、修改pom.xml文件
      • 4.2、 android修改根配置文件
      • 4.3、配置类
    • 总结

      一、问题描述

      上周不是搭了个SpringBoot整合sharding-jdbc分库分表的架子么,组里老哥不让我把开发环境的配置文件放到resource根目录下。

      要放到类似config/local/dev目录下。

      如下图:

      SpringBoot之如何指定配置文件启动

      解决该问题时还是遇到了一些问题的,记录如下。

      二、 SpringBoot如何指定配置文件启动

      SpringBoot项目可以配置多个配置文件,项目在不同的环境运行时可以指定其对应的配置文件。

      现以dev、beta两个环境为例,具体步骤如下:

      1、pom.xml中配置

      在项目的根pom.xml文件中添加以下配置

          <profiles>
              <!-- dev环境 -->
              <profile>
                  <id>local-dev</id>
                  <properties>
                      <env>dev</env>
                  </properties>
              </profile>
              <!-- beta环境 -->
              <profile>
                  <id>local-beta</id>
                  <properties>
                      <env>beta</env>
                  </properties>
              </profile>
      

      添加完后可以在右侧Maven Projects->Profiles中看到新加的配置,如下图:

      SpringBoot之如何指定配置文件启动

      local-nexus是新建项目时就有的。

      2、配置配置文件

      2.1、配置application.properties

      根apjavascriptplication.properties配置文件中可以配置所有环境共用的一些配置,其配置如下:

      SpringBoot之如何指定配置文件启动

      其中spring.profiles.active是指定使用哪个配置文件,@evn@是使用maven的变量,即取上一步中配置的<env>的值。此处不配置服务端口,默认是8080。

      2.2、配置beta环境的配置文件

      文件名为application-XXX.properties。此处XXX必须为1中配置的beta环境的<env>的值,否则该配置文件不生效。

      application-beta.properties是beta环境的配置文件,配置如下图。

      SpringBoot之如何指定配置文件启动

      2.3、配置开发环境的配置文件

      文件名为application-XXX.properties。此处XXX必须为1中配置的dev环境的<env>的值,否则该配置文件不生效。

      application-dev.properties是dev环境的配置文件,配置如下图。

      SpringBoot之如何指定配置文件启动

      3、验证

      3.1指定beta配置文件启动

      若指定beta配置文件启动,则服务端口应该是8082。

      aWHxl

      选择beta启动。

      SpringBoot之如何指定配置文件启动

      查看日志,服务确实启用了8082端口,说明使用的是application-beta.properties配置文件。

      SpringBoot之如何指定配置文件启动

      3.2指定dev配置文件启动

      若指定dev配置文件启动,则服务端口应该是8083。

      选择dev启动。

      SpringBoot之如何指定配置文件启动

      查看日志,服务确实启用了8083端口,说明使用的是application-dev.properties配置文件。

      SpringBoot之如何指定配置文件启动

      三、分析问题

      好了,现在该解决刚开始的问题了。但是该问题还真不能完全只通过二中描述的方式解决。可以试下,其他配置不变,把a编程pplication-dev.properties放到classpath:config/local/dev目录下,启动项目。

      SpringBoot之如何指定配置文件启动

      查看日志,服务启用的是8080端口,说明application-dev.properties配置文件没有生效。

      SpringBoot之如何指定配置文件启动

      为啥没生效呢?

      因为SpringBoot项目的配置文件默认情况下只有放在以下四个位置才生效。

      • 项目根目录
      • 项目根目录/config目录
      • resources目录
      • resources/config

      且优先级是:2>1>4>3。

      那么如何使除上面四个位置下的指定位置的配置文件生效呢?具体操作如下。

      四、解决问题

      4.1编程、修改pom.xml文件

      pom.xml文件添加如下配置,指定配置文件所在路径。

      SpringBoot之如何指定配置文件启动

      4.2、 修改根配置文件

      根配置文件中获取maven变量config.path。

      SpringBoot之如何指定配置文件启动

      4.3、配置类

      配置配置类并指定外部配置文件,指定项目启动时加载config.path路径下的配置文件

      package c开发者_C教程om.luffylv.shardingspherespringbootdemo.config;
      
      import org.springframework.context.annotation.Configuration;
      import org.springframework.context.annotation.PropertySource;
      
      @Configuration
      @PropertySource(value = "${config.path}/application-dev.properties")
      public class EnvLoadConfig {
      }
      

      启动项目测试下效果,可以看到config/local/dev下的配置文件生效了。

      SpringBoot之如何指定配置文件启动

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号