Spring Boot如何指定外部application.properties覆盖默认配置文件?
解决Spring Boot指定外部配置文件覆盖默认配置的问题
你的代码里用@PropertySource没生效,是因为Spring Boot默认配置文件(resources下的application.properties)的加载优先级高于@PropertySource,所以需要用优先级更高的方式来指定外部配置文件,下面是几种可行方案:
方案一:启动时通过命令行参数指定
直接在启动jar包时添加参数,优先级最高:
java -jar your-app.jar --spring.config.location=file:D:\application.properties
如果是在IDEA等IDE中运行,可以在「Run/Debug Configurations」的「Program arguments」里添加:
--spring.config.location=file:D:\application.properties
方案二:在main方法中配置SpringApplication
修改启动类的main方法,显式设置配置文件路径:
@SpringBootApplication import java.util.Collections; public class MyWebAppApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(MyWebAppApplication.class); app.setDefaultProperties(Collections.singletonMap("spring.config.location", "file:D:\\application.properties")); app.run(args); } }
或者用SpringApplicationBuilder的方式:
@SpringBootApplication public class MyWebAppApplication { public static void main(String[] args) { new SpringApplicationBuilder(MyWebAppApplication.class) .properties("spring.config.location=file:D:\\application.properties") .run(args); } }
方案三:通过环境变量指定
设置系统环境变量SPRING_CONFIG_LOCATION为file:D:\application.properties,Spring Boot会自动读取这个环境变量来加载配置文件。
注意:如果想让外部配置文件和默认配置文件共存,仅用外部配置补充或覆盖默认配置,可以改用spring.config.additional-location参数,而非完全替换默认配置路径。
内容的提问来源于stack exchange,提问作者Divyanshu Supehia
相关产品推荐
相关产品推荐

