首页 > 解决方案 > 计算和初始化外部配置属性

问题描述

我在中定义了以下属性application.properties

test.key1=value_1,value_2
test.key2=value_3,value_4

并将属性检索为

@ConfigurationProperties("test")
class CustomPropLoader extends HashMap<String, List<String>>> {}

我可以使用上述方法注入所需的对象。但是我的要求是

反转上面的映射,然后使其在容器中的所有对象中可用,以启用通过 hashmap 键查找而不是搜索所有条目

我尝试执行以下操作:

@Service
class PropFetcher {

private CustomPropLoader customPropLoader;
private Map<String,String> transposedMap;

void PropFetcher(@Autowired CustomPropLoader customPropLoader){
this.customPropLoader = customPropLoader;
this.transposedMap = transposeValues(); // logic to transpose the hashmap entries
}

这似乎可行,但是由于 transposedMap 无法被模拟或注入,因此测试性较差。是否有更好的解决方案来在 bean 初始化期间反转值,这也是可单元测试的?

PS:我不喜欢@PostConstruct 功能。

谢谢

标签: javaspringspring-boot

解决方案


推荐阅读