Spring Dubbo 注解无效,空指针

GreenArrow 发布于 2014/02/19 17:19
阅读 19K+
收藏 3

今天采用Spring注解  Dubbo(注解)的方式整合服务

消费者

@Controller
public class HomeController {

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);


    @Reference(version = "0.0.1")
    private IDemoService demoService;

@RequestMapping(value = "/say", method = RequestMethod.GET)
    @ResponseBody
public String sayHello(){
demoService.sayHello();
        return "1";
}

@RequestMapping(value = "/add", method = RequestMethod.GET)
public void addition(){
System.out.println(demoService.addition(5, 5));
}


}

application xml:

<dubbo:application name="consumer-of-helloworld-app" />
<dubbo:registry address="zookeeper://192.168.10.150:2181" />
    <dubbo:annotation package="com.demo.dubbo.controller"/>

提供者provider

import com.alibaba.dubbo.config.annotation.Service;

@Service(version = "0.0.1")
public class DemoServiceImpl implements IDemoService {


@Override
public void sayHello() {
System.out.println("hello dubbo!");
}


@Override
public int addition(int a, int b) {
int result = a + b;
System.out.println("addition:" + result);
return result;
}


}

application xml:

<dubbo:annotation package="com.winks.dubbo.demo.provider" />


其他配置都在dubbo.properties

消费者采用的是 bat启动,


消费者的 IDemoService demoService 始终是空指针。


有谁能否提供一个是dubbo注解实例,谢谢!


加载中
0
程序猿_哲
程序猿_哲
消费者的  IDemoService demoService 始终是空指针。 这里是不是不应用dubbo的方式实例化而用spring提供注解@Autowired
0
刚毕业的xiao学生
刚毕业的xiao学生

我成功了,出现空指针的原因是:spring mvc扫描的时候根本无法识别@Reference ,同一方面,dubbo的扫描也无法识别Spring @Controller ,所以两个扫描的顺序要排列好,如果先扫了controller,这时候把控制器都实例化好了,再扫dubbo的服务,就会出现空指针。

下面是我成功的代码:

<mvc:annotation-driven />

<!-- 查找xxx路径下所有@Controller 注释类,添加与项目相关的controller -->

<dubbo:annotation package="XXX.XXX.XXX.controller" />

<context:component-scan base-package="XXX.XXX.XXX.controller"/>

祝成功

l
lucyferzero
但是 还是没成功!
0
520920
520920

引用来自“刚毕业的xiao学生”的评论

我成功了,出现空指针的原因是:spring mvc扫描的时候根本无法识别@Reference ,同一方面,dubbo的扫描也无法识别Spring @Controller ,所以两个扫描的顺序要排列好,如果先扫了controller,这时候把控制器都实例化好了,再扫dubbo的服务,就会出现空指针。

下面是我成功的代码:

<mvc:annotation-driven />

<!-- 查找xxx路径下所有@Controller 注释类,添加与项目相关的controller -->

<dubbo:annotation package="XXX.XXX.XXX.controller" />

<context:component-scan base-package="XXX.XXX.XXX.controller"/>

祝成功

楼主你好:

我也遇到了这个问题,请问你是如何解决的?

@刚毕业的xiao学生 我试了你的方法还是报错

520920
520920
@plugin 解决了,好像不是这的问题……
plugin
plugin
层主解决了吗
0
jettylee
jettylee

引用来自“刚毕业的xiao学生”的评论

我成功了,出现空指针的原因是:spring mvc扫描的时候根本无法识别@Reference ,同一方面,dubbo的扫描也无法识别Spring @Controller ,所以两个扫描的顺序要排列好,如果先扫了controller,这时候把控制器都实例化好了,再扫dubbo的服务,就会出现空指针。

下面是我成功的代码:

<mvc:annotation-driven />

<!-- 查找xxx路径下所有@Controller 注释类,添加与项目相关的controller -->

<dubbo:annotation package="XXX.XXX.XXX.controller" />

<context:component-scan base-package="XXX.XXX.XXX.controller"/>

祝成功

你的方法确实管用,调节顺序之后就可以。
如果其他同学试了这个方法不管用,可以试试加一个Bean。
@Component
public class DubboSupport
{
    @Reference(version="1.0.0")
    protected MemberService memberService;
    
    public MemberService getMemberService(){
        return this.memberService;
    }
}


然后在controller中:
  //方式二
    @Autowired
    private DubboSupport dubboSupport;
这种方法不受顺序影响
重复的名字
重复的名字
我加了类,也不好使啊,还是空
0
daveztong
daveztong
加个 exclude不能解决吗?
0
nonnetta
nonnetta
其实解决方案就是在扫描控制器之前先扫描dubbo注解。
0
金风
也遇到了,consumer里面不能注入,不明白为什么,配置里面实例就是一个refercen啊。
0
Jiang坤
Jiang坤

这篇文章讲的很清楚,我是将dubbo的@Reference注入到Service层。这样就不会与@Controller冲突里了

http://blog.csdn.net/qq_16414307/article/details/50328481

返回顶部
顶部