前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot中的配置文件分离

SpringBoot中的配置文件分离

作者头像
玖柒的小窝
修改2021-09-14 14:38:21
2.9K0
修改2021-09-14 14:38:21
举报
文章被收录于专栏:各类技术文章~

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 启动命令

代码语言:javascript
复制
java -jar xx.jar --spring.profiles.active=dev

1.4 扩展

1.你也可以直接在application.properties中指定使用哪一个文件
代码语言:javascript
复制
spring.profiles.active = dev

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

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

2.自定义的配置文件

2.1 启动时指定

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

代码语言:javascript
复制
# 需要在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

代码语言:javascript
复制
xx.pathConfig.path = ./config/path.properties
2.2.2 编写加载类

这样启动时就会先加载出application.properties中${xx.pathConfig.path}的值,然后加载出这个定义的配置文件. 只要修改application.properties中配置的自定义文件路径,就可以切换到不同的配置文件.

代码语言:javascript
复制
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 启动命令
代码语言:javascript
复制
java -jar xx.jar --spring.profiles.active=dev

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.背景
  • 1.默认的配置文件
    • 1.1 application.properties
      • 1.2 application-xx.properties
        • 1.3 启动命令
          • 1.4 扩展
          • 2.自定义的配置文件
            • 2.1 启动时指定
              • 2.2 代码中指定
                • 2.2.1 在application.properties文件中指定一个文件路径
                • 2.2.2 编写加载类
                • 2.2.3 启动命令
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档