Spring Boot读取外部自定义配置文件

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

方法一

第一步,需要把读取配置文件的bean类指定加载文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Component
@PropertySource("file:settle-${spring.profiles.active}.properties")
@ConfigurationProperties(prefix = "airdrop")
@Getter
@Setter
public class AirdropProperties {

private Integer viteInitDuration; // vite多长时间能够领取空投初始值

private String viteAmount; // vite空投数量

private Integer ipLimitCount; // ip限制次数

private Integer uuidLimitCount; // uuid限制次数
}

主要是file:settle-${spring.profiles.active}.properties指定为file,否则还是会读取默认resource下的配置文件。

第二步,把该配置文件放在启动命令处

1
2
例如当前目录为~/Desktop/demo
需要把settle-dev.properties文件放在这里,然后在这里启动命令: java -jar xxx.jar

成功读取外部配置文件。

这种方式就必须在外部指定配置文件,否则就会报找不到文件的错误。

方法二

第一种方法虽然可以实现,但是比较麻烦,在ide中进行调试时会报文件找不到的错误,因此,我们想要的是仍然是用classpath,但还加载外部配置文件的方法。

方法二就可以实现

第一步:修改maven插件的属性,加上layout属性。

1
2
3
4
5
6
7
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
</configuration>
</plugin>

第二步:打包、并把配置文件放在jar包的同级目录config下

第三步:启动jar包时指定loader.path参数

1
java -Dloader.path=./config -jar growth-0.0.1.jar

我的配置文件settle-dev.properties在config目录下。