apache / dubbo-spring-boot-project

Spring Boot Project for Apache Dubbo
https://dubbo.apache.org
Apache License 2.0
5.41k stars 1.88k forks source link

消费方使用拦截器,导致@Reference 注入为null #288

Closed ZuRun closed 5 years ago

ZuRun commented 5 years ago

dubbo消费方,使用了拦截器,且group为Constants.CONSUMER时,会导致@Reference注解注入失败.此时消费方调用提供方时,demoService为null,抛出空指针异常.

@Activate(group = {Constants.CONSUMER})
public class DubboFilter implements Filter{

}
@Reference(version = "${dubbo.service.version}")
private DemoService demoService;

目前只发现这种情况有问题

  1. 先启动的provider,然后启动的consumer
  2. 使用了拦截器才会有问题
  3. 使用Constants.PROVIDER的拦截器可以正常使用.
  4. 消费方不使用此拦截器的时候,@Reference注解可以正常注入
  5. 提供方拦截器是正常使用的
Jc826 commented 5 years ago

dubbo消费方,使用了拦截器,且group为Constants.CONSUMER时,会导致@Reference注解注入失败.此时消费方调用提供方时,demoService为null,抛出空指针异常.

@Activate(group = {Constants.CONSUMER})
public class DubboFilter implements Filter{

}
@Reference(version = "${dubbo.service.version}")
private DemoService demoService;

目前只发现这种情况有问题

  1. 先启动的provider,然后启动的consumer
  2. 使用了拦截器才会有问题
  3. 使用Constants.PROVIDER的拦截器可以正常使用.
  4. 消费方不使用此拦截器的时候,@Reference注解可以正常注入
  5. 提供方拦截器是正常使用的

@Reference(check=false)

mercyblitz commented 5 years ago

Please add Dubbo 2.6.5 in order to override indirectly dependencies:

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

<!-- Dubbo -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.5</version>
</dependency>
<!-- Spring Context Extras -->
<dependency>
    <groupId>com.alibaba.spring</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>1.0.2</version>
</dependency>

There was a legacy issue in Dubbo.

SheldonKubor commented 5 years ago

这个怎么解决的,求解答