Closed mycybyby closed 5 years ago
直接 @Reference 中的默认值该为true 也能搞定吧
也就是所有 <值设置为 false> 的都将会被忽略 然后实际用到这个值的地方没有同时设置这个默认值.
加这种 !value.equals(method.getDefaultValue())
自做聪明的判断, 又不把后续处理的地方同步!
单说这个问题, 目前看来只能在运行时加上 -Ddubbo.reference.check=false
这么处理了
@liuanxin 我在IDEA启动时加上-Ddubbo.reference.check=false 执行效果是一样的呢
目前测试到spring-boot-starter-dubbo项目必须设置consumer.check=false才行,这样一来变成了所有都不检查,虽然不是初衷,但是目前只能这样子了,还是希望官方修复下@Reference注解
@Comven spring.dubbo.consumer.check=false 我添加这个配置并没有生效,他还是会所有都检测一遍,如果我希望消费方先于提供方启动有什么办法吗
@Comven 我用-Ddubbo.consumer.check=false这个之后就可以实现延迟加载服务了,但是感觉这样并不是一个好的办法
我是直接搞个spring-dubbo-consumer.xml 用一个DubboConfig Java Config方式引入这个xml `@Configuration @ImportResource(locations = {"classpath:spring/spring-dubbo-consumer.xml"}) public class DubboConfig {
}
配置文件里就一个配置
<dubbo:consumer check="false"/>
`
AbstractConfig中appendAnnotation方法中: if (value != null && ! value.equals(method.getDefaultValue())) 因为check=false等于默认值,所以if里面的逻辑没有执行(setter方法没有被调用),导致AbstractReferenceConfig的check没有修改为false,还是null。 根本原因还是AbstractReferenceConfig中check的默认值是null,而@Reference的默认值是false,修改方法要不把AbstractReferenceConfig的check改成false,要不把上面的判断去掉。