apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.5k stars 26.43k forks source link

@Reference check=false doesn't take effect #195

Closed mycybyby closed 5 years ago

mycybyby commented 8 years ago

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,要不把上面的判断去掉。

kxyfyh commented 7 years ago

直接 @Reference 中的默认值该为true 也能搞定吧

liuanxin commented 7 years ago

也就是所有 <值设置为 false> 的都将会被忽略 然后实际用到这个值的地方没有同时设置这个默认值.

加这种 !value.equals(method.getDefaultValue()) 自做聪明的判断, 又不把后续处理的地方同步!

单说这个问题, 目前看来只能在运行时加上 -Ddubbo.reference.check=false 这么处理了

Comven commented 7 years ago

@liuanxin 我在IDEA启动时加上-Ddubbo.reference.check=false 执行效果是一样的呢

Comven commented 7 years ago

目前测试到spring-boot-starter-dubbo项目必须设置consumer.check=false才行,这样一来变成了所有都不检查,虽然不是初衷,但是目前只能这样子了,还是希望官方修复下@Reference注解

AniFengx commented 7 years ago

@Comven spring.dubbo.consumer.check=false 我添加这个配置并没有生效,他还是会所有都检测一遍,如果我希望消费方先于提供方启动有什么办法吗

AniFengx commented 7 years ago

@Comven 我用-Ddubbo.consumer.check=false这个之后就可以实现延迟加载服务了,但是感觉这样并不是一个好的办法

ijaychang commented 6 years ago

我是直接搞个spring-dubbo-consumer.xml 用一个DubboConfig Java Config方式引入这个xml `@Configuration @ImportResource(locations = {"classpath:spring/spring-dubbo-consumer.xml"}) public class DubboConfig {

} 配置文件里就一个配置

<dubbo:consumer check="false"/>

`