当前位置:主页 > java教程 > Springboot引用外部配置文件的步骤

Springboot引用外部配置文件的实例方法

发布:2019-07-31 17:25:17 119


给网友们整理相关的编程文章,网友麴月玲根据主题投稿了本篇教程内容,涉及到Springboot、外部配置文件、springboot配置文件、Springboot引用外部配置文件的步骤相关内容,已被575网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

Springboot引用外部配置文件的步骤

现在的项目越来越多的都是打包成jar运行尤其是springboot项目,这时候配置文件如果一直放在项目中,每次进行简单的修改时总会有些不方便,这里我们看下打包成jar之后,从外部配置文件中读取配置信息。

首先想到的是通过java代码读取外边某个路径下的文件,但是开始做之后发现好多问题。后来又找其它解决方案,正好搜到一种简单的解决方式:

java -jar demo.jar --Dspring.config.location=myapplication.properties

这样就可以通过@value注解读取myapplication.properties中的配置信息了。(上边的大写D好像可以不写的)

后来想着直接把spring.config.location写到application.properties配置文件中,然后指定一个固定的外部配置文件来获取信息,这样启动的时候就可以不用加最后一行了。

spring.config.location=C:\\Users\\Administrator\\git\\Display\\host.properties

可是这种方式是行不通的,比如我配置文件中有下面信息:

myname=hellopangkunkun

代码:

myname=hellopangkunkun

我在启动的时候直接报这个地方的错误,说是无法找到myname,导致整个项目出异常。

后来搜了下文章,对比官网文档,又得到了一些信息:

24.3 Application property files
SpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment:

A /config subdirectory of the current directory.
The current directory
A classpath /config package
The classpath root
The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).

这里说了四种方式可以把配置文件放到外部的。
第一种是在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下;
第二种是直接把配置文件放到jar包的同级目录;
第三种在classpath下建一个config文件夹,然后把配置文件放进去;
第四种是在classpath下直接放配置文件。

这四种方式的优先级是从一到四一次降低的。

注: 一二两种方案其实不是jar包的同级目录,而是(执行启动指令的)同级目录。为了便于理解我把上面的当前目录说成jar包的同级目录,这种说法并不对。如果是刚开始接触或者调试这块,还是在jar包同级目录方便。

由于我们是要从外部读取文件,所以直接说前两种。

看下文件目录结构:

Springboot引用外部配置文件的方法步骤

这里的application.properties是我们的配置文件,config是创建的另外一个目录,放的也是application.properties。

Display-1.0-SNAPSHOT.jar中可以包含application.properties配置文件也可以不包含。

为了验证可以在config中设置myname=name1,jar同级目录中设置myname=name2,如果jar中包含配置文件,将其中设置成myname=name3。

直接使用指令启动:

java -jar Display-1.0-SNAPSHOT.jar

之后验证可得知,我们通过@Value(“${myname}”)获取到的myname的值是name1,把config下的配置文件删除后获取的结果是name2,都删除后才会获取jar包中配置文件的数据name3。

另外如果我们想要想配置测试、开发、生产环境一样使用另外一个配置文件怎么来实现呢?

下面继续,我把application.properties的信息修改如下:

spring.profiles.active=dev,host

配置文件目录结构:

Springboot引用外部配置文件的方法步骤

我又新增了一个名为application-host.properties的配置文件,同理也可以把这个文件考出来放到jar包外面,同级目录或者config下。

这样项目启动之后dev配置文件和host配置文件都会生效。

Springboot引用外部配置文件的方法步骤

这里为了突出其他的配置文件我只把host的拷出来了,dev的还是在jar包里,application.properties配置文件放在jar中也一样,我们需要的主要是host的配置文件。

这样每次修改的时候只需要修改配置文件信息,然后重启项目就好,不需要重新打包。

如果想要只修改配置文件,不重启项目就能生效,可以考虑用java来读取配置文件中的数据,把它当作一个普通文件来读取,或者写到其他数据库中也行。上面这些方案已经能够满足我的需求了,所以其他的不在做了。

最后提个问题,也是我没弄明白的,希望知道的各位能够给个答案:

我把spring.config.location这个配置写到配置文件中为什么没有生效?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


参考资料

相关文章

  • Spring Boot利用Docker快速部署项目的完整步骤

    Spring Boot利用Docker快速部署项目的完整步骤

    发布:2022-10-17

    给大家整理了关于Spring Boot的教程,这篇文章主要给大家介绍了关于Spring Boot利用Docker快速部署项目的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一


  • SpringBoot Bean被加载时进行控制

    发布:2023-04-07

    很多时候我们需要根据不同的条件在容器中加载不同的Bean,或者根据不同的条件来选择是否在容器中加载某个Bean,这就是Bean的加载控制,一般我们可以通过编程式或注解式两种不同的方式来完成Bean的加载控制


  • spring boot集成rabbitmq的代码实例

    发布:2019-10-24

    这篇文章主要给大家介绍了关于spring boot集成rabbitmq的相关资料,springboot集成RabbitMQ非常简单,文中通过示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面随着小编来一起学习学习吧


  • Springboot整合策略模式详解

    发布:2023-04-26

    这篇文章主要介绍了Springboot整合策略模式详解的相关资料,需要的朋友可以参考下


  • 记一次Maven项目改造成SpringBoot项目的过程实践

    记一次Maven项目改造成SpringBoot项目的过程实践

    发布:2022-10-17

    为网友们分享了关于Maven的教程,本文主要介绍了Maven项目改造成SpringBoot项目的过程实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Springboot启动同时创建数据库和表实现方法

    发布:2023-03-08

    这篇文章主要介绍了Springboot启动同时创建数据库和表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧


  • SpringBoot同一接口多个实现类配置的实例详解

    发布:2022-04-24

    这篇文章主要介绍了SpringBoot同一接口多个实现类配置的实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


  • SpringBoot AOP统一处理Web请求日志的示例代码

    发布:2023-04-09

    springboot有很多方法处理日志,例如拦截器,aop切面,service中代码记录等,下面这篇文章主要给大家介绍了关于SpringBoot AOP统一处理Web请求日志的相关资料,需要的朋友可以参考下


网友讨论