一、加载优先级
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
当然,还能在代码里指定
@SpringBootApplication
@PropertySource(value={"file:config.properties"})
public class SpringbootrestdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootrestdemoApplication.class, args);
}
}
3.按Profile不同环境读取不同配置
不同环境的配置设置一个配置文件,例如:
dev环境下的配置配置在application-dev.properties中;
prod环境下的配置配置在application-prod.properties中。
在application.properties中指定使用哪一个文件
spring.profiles.active = dev
当然,你也可以在运行的时候手动指定:
java -jar myproject.jar --spring.profiles.active = prod
---------------------
作者:xiaren_1988
来源:CSDN
原文:https://blog.csdn.net/xiaren_1988/article/details/82418160
版权声明:本文为博主原创文章,转载请附上博文链接!