2-1.临时属性设置
约 721 字大约 2 分钟
2025-06-23
1. 临时属性设置
在 Spring Boot 项目打包发布后,如果需要修改某些配置(例如端口号),可以使用临时属性的方式,无需修改已打包的程序。
Spring Boot 允许在启动时通过命令行参数设置临时属性,以覆盖配置文件中的属性。
1.1 使用方法
在启动命令后添加 --属性名=属性值
的形式,多个属性之间用空格分隔。
java -jar springboot.jar --server.port=80 --logging.level.root=debug
- 属性名:采用 properties 文件中的格式,多级名称使用点分隔。
- 注意:这里的格式不是 YAML 格式。
1.2 属性加载优先级
临时属性的加载优先级高于配置文件。Spring Boot 有多种配置加载方式,其优先级顺序如下(从低到高):
- Config data(配置文件)
- Command line arguments(命令行临时参数)
Spring Boot 外部配置优先级列表可在官方文档中查询:Externalized Configuration
当属性值与预期不符时,检查是否有更高优先级的属性覆盖了配置。例如,系统属性 user.name
可能会覆盖配置文件中的 user.name
属性。
现在我们了解了如何通过临时属性来覆盖配置文件中的属性,以及属性加载的优先级顺序。接下来,我们将探讨如何在开发环境中使用临时属性,以便在上线前进行充分的测试。
2. 开发环境中使用临时属性
在开发环境(如 IntelliJ IDEA)中,可以通过配置运行参数来设置临时属性:
- 打开 Spring Boot 引导类的运行配置界面。
- 在 "Program arguments" (程序参数) 对应的位置添加临时属性,格式与命令行相同 (
--属性名=属性值
)。
2.1 原理分析
在 main
方法中传递的 args
参数,包含了在 IDEA 中配置的临时参数。
public static void main(String[] args) {
SpringApplication.run(SSMPApplication.class, args);
}
SpringApplication.run()
方法接收 args
参数,从而将临时属性传递到 Spring Boot 程序中。
2.2 自定义配置
可以修改
main
方法的调用方式,阻止外部临时属性进入 Spring Boot 程序。public static void main(String[] args) { SpringApplication.run(SSMPApplication.class); // 不传递 args 参数 }
或者,将配置直接写成字符串数组,传递给程序入口。
public static void main(String[] args) { String[] arg = new String[1]; arg[0] = "--server.port=8082"; SpringApplication.run(SSMPApplication.class, arg); }
注意: 这种做法没有实际开发意义,通常不使用。