Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.2.8引入的nacos-spring-context 1.1.0和dubbo不兼容,@NacosInjected注入bean时抛异常 #201

Closed
zrlw opened this issue Jul 4, 2021 · 2 comments
Labels
bug Something isn't working dependencies Pull requests that update a dependency file

Comments

@zrlw
Copy link

zrlw commented Jul 4, 2021

用了nacos-spring-context 1.1.0之后,启动抛ClassCastException,异常位置在AnnotationNacosInjectedBeanPostProcessor.java 145行,提示com.sun.proxy.$Proxy113 cannot be cast to java.util.Map,跟踪到此发现attributes对象是个map,key="properties"对应的value对象类型是@NacosProperties,转Map注定异常。
问题原因是dubbo和nacos-spring-context 1.1.0依赖的com.alibaba.spring/spring-context-support版本不兼容:用dubbo的就会出现@NacosInjected注入异常,但是pom.xml排除dubbo引入的spring-context-support,还会出现@DubboReference注入异常:ClassCastException: java.lang.String cannot be cast to java.lang.Class ( DubboAnnotationUtils.java),dubbo社区反馈说计划去掉spring-context-support的引入,但现在还是横竖不行的。

相关的issue:
nacos-group/nacos-spring-project#258 (nacos-group/nacos-spring-project)
apache/dubbo#7797 (apache/dubbo)

@zrlw
Copy link
Author

zrlw commented Jul 5, 2021

根源是 alibaba的spring-context-support升到1.0.11并没有考虑向前兼容,AbstractAnnotationBeanPostProcessor新增的classValuesAsString,nestedAnnotationsAsMap默认为true,而当前所有dubbo版本的ReferenceAnnotationBeanPostProcessor依赖的是spring-context-support 1.0.10以及之前的版本,dubbo使用spring-context-support 1.0.11时需要将这两个值改为false。
我给dubbo提交了修订:
apache/dubbo#8217

@zrlw
Copy link
Author

zrlw commented Aug 31, 2021

dubbo 2.7.13已修复

@zrlw zrlw closed this as completed Aug 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working dependencies Pull requests that update a dependency file
Projects
None yet
Development

No branches or pull requests

2 participants