Closed zxn-git closed 3 years ago
缺省场景很多的,我们线上好多都配置的json。所有的配置都要有默认值,如果nocos没有配置线上依然可以运行
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2021年6月10日(星期四) 晚上7:28 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [nacos-group/nacos-spring-project] json默认值解析失败修复 (#262)
@horizonzy commented on this pull request.
In nacos-spring-context/src/main/java/com/alibaba/nacos/spring/context/annotation/config/NacosValueAnnotationBeanPostProcessor.java:
> @@ -375,7 +375,7 @@ private void setField(final NacosValueTarget nacosValueTarget, private String resolveExpr(String nacosValueExpr) { int replaceHolderBegin = nacosValueExpr.indexOf(PLACEHOLDER_PREFIX) + PLACEHOLDER_PREFIX.length(); - int replaceHolderEnd = nacosValueExpr.indexOf(PLACEHOLDER_SUFFIX, replaceHolderBegin); + int replaceHolderEnd = nacosValueExpr.lastIndexOf(PLACEHOLDER_SUFFIX);
Hi, 这种修复应该是不行的。可以本地跑NacosPropertySourceTest这个测试类来进行测试。这个问题不好解决,在缺省值种使用json是什么场景呢。
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
缺省场景很多的,我们线上好多都配置的json。所有的配置都要有默认值,如果nocos没有配置线上依然可以运行
嗯,现在的问题就是去找${
对应的}
位置出错了,我的建议是通过{
和}
去定位}
的位置。
嗯,现在要明确你们对下面这种场景的输出预期是什么我理解不管 ${a:这里配置了什么} 最后一个}才是结尾标志。 类似${a:}}} 这种是放弃后面两个} ,还是 }} 这两个作为默认值
发送
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2021年6月11日(星期五) 凌晨0:01 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [nacos-group/nacos-spring-project] json默认值解析失败修复 (#262)
@horizonzy commented on this pull request.
In nacos-spring-context/src/main/java/com/alibaba/nacos/spring/context/annotation/config/NacosValueAnnotationBeanPostProcessor.java:
> @@ -375,7 +375,7 @@ private void setField(final NacosValueTarget nacosValueTarget, private String resolveExpr(String nacosValueExpr) { int replaceHolderBegin = nacosValueExpr.indexOf(PLACEHOLDER_PREFIX) + PLACEHOLDER_PREFIX.length(); - int replaceHolderEnd = nacosValueExpr.indexOf(PLACEHOLDER_SUFFIX, replaceHolderBegin); + int replaceHolderEnd = nacosValueExpr.lastIndexOf(PLACEHOLDER_SUFFIX);
提供一个思路。通过{和}符号的出栈入栈来定位}的下标
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
这个方法resolve的目的就是获取排除缺省值的原始信息.比如以下几种场景:
我的建议是: 通过{
的入栈和}
的出栈去定位${
中出现{
所匹配的}
的位置。
另外,在NacosPropertySourceTest的App类中增加一个String字段缺省值存在json这种格式的。把测试补上。
哈喽,有进展吗。
最近比较忙,不好意思哈,方便的话可以找其他人修复下
------------------ 原始邮件 ------------------ 发件人: "nacos-group/nacos-spring-project" @.>; 发送时间: 2021年6月16日(星期三) 下午5:20 @.>; @.**@.>; 主题: Re: [nacos-group/nacos-spring-project] json默认值解析失败修复 (#262)
哈喽,有进展吗。
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
最近比较忙,不好意思哈,方便的话可以找其他人修复下
那暂时先把你这个合并了,剩下的我再提一个补上,感谢贡献。
嗯嗯,非常抱歉,大佬辛苦
------------------ 原始邮件 ------------------ 发件人: "nacos-group/nacos-spring-project" @.>; 发送时间: 2021年6月16日(星期三) 晚上8:52 @.>; @.**@.>; 主题: Re: [nacos-group/nacos-spring-project] json默认值解析失败修复 (#262)
最近比较忙,不好意思哈,方便的话可以找其他人修复下
那暂时先把你这个合并了,剩下的我再提一个补上。
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
Please do not create a Pull Request without creating an issue first.
What is the purpose of the change
修复默认值json解析失败bug:https://github.com/alibaba/nacos/issues/6003
Brief changelog
Verifying this change
Follow this checklist to help us incorporate your contribution quickly and easily:
[ISSUE #123] Fix UnknownException when host config not exist
. Each commit in the pull request should have a meaningful subject line and body.mvn -B clean package apache-rat:check findbugs:findbugs -Dmaven.test.skip=true
to make sure basic checks pass. Runmvn clean install -DskipITs
to make sure unit-test pass. Runmvn clean test-compile failsafe:integration-test
to make sure integration-test pass.