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

 更新时间:2023年04月26日 10:23:17   作者:luffylv  
这篇文章主要介绍了SpringBoot之如何指定配置文件启动问题,具有很好的参考价值,希望对大家有所帮助。

一、问题描述

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

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

如下图:

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

二、 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中看到新加的配置,如下图:

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

2、配置配置文件

2.1、配置application.properties

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

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

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

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

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

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

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

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

3、验证

3.1指定beta配置文件启动

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

选择beta启动。

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

3.2指定dev配置文件启动

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

选择dev启动。

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

三、分析问题

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

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

为啥没生效呢?

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

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

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

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

四、解决问题

4.1、修改pom.xml文件

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

4.2、 修改根配置文件

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

4.3、配置类

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

package com.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下的配置文件生效了。

总结

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

相关文章

  • MyBatis动态SQL中的trim标签的使用方法

    MyBatis动态SQL中的trim标签的使用方法

    这篇文章主要介绍了MyBatis动态SQL中的trim标签的使用方法,需要的朋友可以参考下
    2017-05-05
  • mvn compile报错“程序包com.XXX不存在”

    mvn compile报错“程序包com.XXX不存在”

    本文主要介绍了mvn compile报错“程序包com.XXX不存在”,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 基于OpenCv与JVM实现加载保存图像功能(JAVA 图像处理)

    基于OpenCv与JVM实现加载保存图像功能(JAVA 图像处理)

    openCv有一个名imread的简单函数,用于从文件中读取图像,本文给大家介绍JAVA 图像处理基于OpenCv与JVM实现加载保存图像功能,感兴趣的朋友一起看看吧
    2022-01-01
  • SpringBoot+Jersey跨域文件上传的实现示例

    SpringBoot+Jersey跨域文件上传的实现示例

    在SpringBoot开发后端服务时,我们一般是提供接口给前端使用,本文主要介绍了SpringBoot+Jersey跨域文件上传的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Java多线程实战之单例模式与多线程的实例详解

    Java多线程实战之单例模式与多线程的实例详解

    今天小编就为大家分享一篇关于Java多线程实战之单例模式与多线程的实例详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • java背包问题动态规划算法分析

    java背包问题动态规划算法分析

    这篇文章主要介绍了java背包问题动态规划算法分析,想了解算法的同学一定要看一下
    2021-04-04
  • SpringBoot返回Json对象报错(返回对象为空{})

    SpringBoot返回Json对象报错(返回对象为空{})

    本文主要介绍介绍了SpringBoot返回Json对象报错(返回对象为空{}),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • java项目怎么集成stable diffusion图文生成算法

    java项目怎么集成stable diffusion图文生成算法

    在开发Java项目过程中,我们经常需要使用消息传递来实现不同组件之间的通信,Stable Diffusion是一种基于消息传递的实时通信解决方案,使用Java调用外部服务(如Python脚本或API服务),这些服务运行Stable Diffusion模型,本文将介绍如何将Stable Diffusion集成到Java项目
    2024-07-07
  • SpringBoot+Redis实现后端接口防重复提交校验的示例

    SpringBoot+Redis实现后端接口防重复提交校验的示例

    本文将结合实例代码,介绍SpringBoot+Redis实现后端接口防重复提交校验的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • JavaFx 中创建计时器的步骤详解

    JavaFx 中创建计时器的步骤详解

    本文介绍了如何在JavaFx中创建计时器,通过创建计时器界面、编写计时器逻辑以及关联计时器按钮,我们可以快速实现一个灵活可靠的计时器组件,本文能够帮助读者在 JavaFx 中成功实现自己的计时器功能,感兴趣的朋友一起看看吧
    2023-11-11

最新评论