apollo icon indicating copy to clipboard operation
apollo copied to clipboard

Apollo自定义placeholder前后缀情况下配置热发布功能失效的BUG

Open spenxu opened this issue 6 years ago • 3 comments

最近使用Apollo,发现Apollo的一个BUG 。Apollo使用PropertySourcesPlaceholderConfigurer进行配置解析处理而Spring 默认占位符是${},如果修改该占位符前缀会出现配置热生效功能作废。比如我配置中修改了占位符如下:

<property name="placeholderPrefix" value="@{"/> <property name="placeholderSuffix" value="}"/>

这种情况下,客户端第一次启动是可以读到apollo配置的。但是如果在portal控制台修改该配置的话不再生效。原因我也找到了。Apollo 有个占位符工具类,该类中写死了占位符,导致无法识别自定义的@{}占位符参数。 image

spenxu avatar Apr 26 '18 09:04 spenxu

@spenxu 貌似确实是个问题,这个可能得研究下如何获取到spring里面配置的prefix和suffix。

你这里自定义prefix的场景是啥?

nobodyiam avatar Apr 26 '18 14:04 nobodyiam

很多可能性比如我们自定了好几种placeholderconfigure 来处理不同的解析需求,比如方便对有些配置进行统一加密或者进行base64编码的。为了区分这些不同需求而对应不同的占位符和解析器。另外就是可能${}作为其他框架的占位符,这时候为了避免冲突而修改占位符

spenxu avatar Apr 27 '18 01:04 spenxu

如果是这样的话,那就相当于在运行时可能会有很多种prefix和suffix了?这个得研究下怎么处理了。。

nobodyiam avatar Apr 27 '18 13:04 nobodyiam