springboot配置文件外置及详解

一、加载优先级

springboot项目打包后application.properties文件在jar包中,不便于部署修改环境配置,此时大多数情况下采用外部配置文件。此时将存在配置顺序问题:命令行优先级最高,

1.jar包中配置项,外部文件中也进行配置

如jar包application.properties中配置server.port=8080 ,命令行等外部文件中配置server.port=8081,则服务端口号为8081;

2.jar包中配置项,外部文件未进行配置

如jar包application.properties中配置

mybatis.mapperLocations = classpath*:mapper/**/*.xml
mybatis.configuration.mapUnderscoreToCamelCase=true

外部文件中不进行配置,此配置按照jar包application.properties中配置生效

二、配置文件外置方式

1.外置配置文件

Spring程序会按优先级从下面这些路径来加载application.properties配置文件

  • 当前目录下的/config目录
  • 当前目录
  • classpath里的/config目录
  • classpath 跟目录

因此,要外置配置文件就很简单了,在jar所在目录新建config文件夹,然后放入配置文件,或者直接放在配置文件在jar目录

2.自定义配置文件

如果你不想使用application.properties作为配置文件,怎么办?完全没问题

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

或者

java -jar -Dspring.config.location=D:\config\config.properties springbootrestdemo-0.0.1-SNAPSHOT.jar 

当然,还能在代码里指定

  1. @SpringBootApplication

  2. @PropertySource(value={"file:config.properties"})

  3. public class SpringbootrestdemoApplication {

  4.  
  5. public static void main(String[] args) {

  6. SpringApplication.run(SpringbootrestdemoApplication.class, args);

  7. }

  8. }

3.按Profile不同环境读取不同配置

不同环境的配置设置一个配置文件,例如:

  • dev环境下的配置配置在application-dev.properties中;
  • prod环境下的配置配置在application-prod.properties中。

在application.properties中指定使用哪一个文件

spring.profiles.active = dev

当然,你也可以在运行的时候手动指定:

java -jar myproject.jar --spring.profiles.active = prod

你可能感兴趣的:(springboot配置文件外置及详解)