Springboot引用外部配置文件

Spring boot 官方文档html

官网对配置文件的说明

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

中文翻译过来就是 这里说了四种方式能够把配置文件放到外部的。java

  • 第一种是在jar包的同一目录下建一个config文件夹,而后把配置文件放到这个文件夹下;
  • 第二种是直接把配置文件放到jar包的同级目录;
  • 第三种在classpath下建一个config文件夹,而后把配置文件放进去;
  • 第四种是在classpath下直接放配置文件。

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

因为咱们是要从外部读取文件,因此直接说前两种。数据库

看下文件目录结构: 输入图片说明app

这里的application.properties是咱们的配置文件,config是建立的另一个目录,放的也是application.properties。ide

Display-1.0-SNAPSHOT.jar中能够包含application.properties配置文件也能够不包含。spring-boot

为了验证能够在config中设置myname=name1,jar同级目录中设置myname=name2,若是jar中包含配置文件,将其中设置成myname=name3。测试

直接使用指令启动:url

java -jar Display-1.0-SNAPSHOT.jar

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

多配置文件化

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

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

spring.profiles.active=dev,host

配置文件目录结构: 输入图片说明

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

这样项目启动以后dev配置文件和host配置文件都会生效。 输入图片说明

这里为了突出其余的配置文件我只把host的拷出来了,dev的仍是在jar包里,application.properties配置文件放在jar中也同样,咱们须要的主要是host的配置文件。

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

若是想要只修改配置文件,不重启项目就能生效,能够考虑用java来读取配置文件中的数据,把它看成一个普通文件来读取,或者写到其余数据库中也行。上面这些方案已经可以知足个人需求了,因此其余的不在作了。

相关文章
相关标签/搜索