SpringBoot中的配置文件分离

0.背景

idea中新建好springboot项目后,默认的配置文件是放在resource目录下的,这个时候进行打包,配置文件会打包到jar中,每次更新配置信息都需要重新打jar包部署,比较麻烦.

目的:将配置文件分离,其他位置存放好配置文件后,在启动jar时指定配置文件,实现灵活切换

1.默认的配置文件

1.1 application.properties

SpringBoot程序默认从application.properties或者application.yaml读取配置,且application.properties>application.yaml

外置配置文件

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

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

eg:在jar所在目录新建config文件夹,然后放入配置文件,或者直接放在配置文件在jar目录.

1.2 application-xx.properties

不同环境设定一个配置文件,带application-前缀都会识别成默认的.

eg:application-dev.properties、application-prod.properties

1.3 启动命令

java -jar xx.jar --spring.profiles.active=dev

1.4 扩展

1.你也可以直接在application.properties中指定使用哪一个文件
spring.profiles.active = dev

启动时,会自动根据填写的参数值,读取对应的配置文件进行加载.

image-20210816172329892

2.如果图里application.properties文件和日志文件也想外置?
  • 把application.properties也放到config目录里去
  • 在application.properties文件或使用的环境properties文件中指明志配置文件路径
#### 日志配置文件路径 logging.config=./config/log4j2.xml

2.自定义的配置文件

2.1 启动时指定

多个配置文件用英文逗号分隔

# 需要在classpath目录中 java -jar xxx.jar --spring.config.location=classpath:/自定义配置文件1.properties,classpath:/自定义配置文件2.properties # 绝对路径指定 java -jar xxx.jar --Dspring.config.location=绝对路径\自定义配置文件3.properties

2.2 代码中指定

2.2.1 在application.properties文件中指定一个文件路径

eg:路径配置如下,当前项目config下的path.properties

xx.pathConfig.path = ./config/path.properties

2.2.2 编写加载类

这样启动时就会先加载出application.properties中${xx.pathConfig.path}的值,然后加载出这个定义的配置文件.

只要修改application.properties中配置的自定义文件路径,就可以切换到不同的配置文件.

package xx.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; /** * @Description: 请求详细地址的配置文件: xx-path.properties * @Class: PathConfig * @Author: Yiang37 * @Date: 2021/7/15 10:00 * @Version: 1.0 */ // @PropertySource("classpath:/xx.properties")这种是classpath相对路径 // file指明实际路径. @PropertySource(value = {"file:${xx.pathConfig.path}"}, encoding="utf-8") @Configuration public class PathConfig { }

2.2.3 启动命令

java -jar xx.jar --spring.profiles.active=dev

__EOF__

本文作者羊37
本文链接https://www.cnblogs.com/yang37/p/15149016.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   羊37  阅读(1158)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示