最近搞个开源工具,涉及到配置问题。
举例
有个应用A工具,打成jar给人用。应用B引用了A的jar
A应用里resources/sys.properties文件里有个coreSize=1
B引用了A,期望修改coreSize的值,改成2
开始天真以为,B应用里有同样文件,同样resources/sys.properties文件里有个coreSize=2。
这样不就能覆盖A中配置了吗
测试下来发现,
A中类里 @Value("${coreSize}") 的值是1
B中类里@Value("${coreSize}") 的值是2
这说明似乎是各自取各自的配置。
将A中配置文件sys.properties去掉,重新deploy下。
再启动B应用,打印发现
A中类里 @Value("${coreSize}") 的值是2
B中类里@Value("${coreSize}") 的值是2
这说明jar中不存在了,依然会取上层应用的配置
将A中配置文件sys.properties去掉,@Value("${coreSize:1}") 重新deploy下。
再启动B应用,打印发现
A中类里 @Value("${coreSize}") 的值是1
B中类里@Value("${coreSize}") 的值是2
这说明jar中只要有一个存在的,就不会取上层的。
怎么才能做到一个工具jar,别人用的时候,如果有配置就覆盖,没有就取默认呢?
似乎只能自己写代码,读取文件,不依赖@Value