如何将a.properties与b.properties合并到application.properties并保持原有效果
实现方案
步骤1:整理合并到application.properties的配置规则
将原a.properties的所有配置项统一加上a.前缀,原b.properties的所有配置项统一加上b.前缀,直接合并到application.properties中即可,无需修改原有配置项的key和value:
示例对比:
原a.properties内容:user.name=zhangsan user.age=20原
b.properties内容:order.id=1001 order.amount=99.9合并到
application.properties后的内容:# 原a.properties配置 a.user.name=zhangsan a.user.age=20 # 原b.properties配置 b.order.id=1001 b.order.amount=99.9
步骤2:修改配置类代码
删除原有@PropertySource注解,通过@ConfigurationProperties按前缀绑定配置到对应Map,保证Map内的key-value和原有逻辑完全一致:
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Map; @Component public class PropFile { private Map<String, String> aMap; private Map<String, String> bMap; // 前缀为a的配置自动注入,自动去掉a.前缀作为Map的key @ConfigurationProperties(prefix = "a") public void setaMap(Map<String, String> aMap) { this.aMap = aMap; } // 前缀为b的配置自动注入,自动去掉b.前缀作为Map的key @ConfigurationProperties(prefix = "b") public void setbMap(Map<String, String> bMap) { this.bMap = bMap; } public Map<String, String> getaMap() { return aMap; } public Map<String, String> getbMap() { return bMap; } }
步骤3:补充依赖(可选)
如果项目中还未引入配置处理器依赖,可添加以支持配置自动补全、消除IDE警告:
- Maven项目
pom.xml添加:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
- Gradle项目
build.gradle添加:
dependencies { annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' }
效果验证
改造完成后aMap、bMap的键值对和分别加载a.properties、b.properties时完全相同,原有业务调用逻辑无需做任何修改,运行效果和原有逻辑100%一致。
内容的提问来源于stack exchange,提问作者Ankita Gupta
相关产品推荐
相关产品推荐

