Spring Dubbo 注解无效,空指针
今天采用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注解实例,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
这篇文章讲的很清楚,我是将dubbo的@Reference注入到Service层。这样就不会与@Controller冲突里了
http://blog.csdn.net/qq_16414307/article/details/50328481
也遇到了,consumer里面不能注入,不明白为什么,配置里面实例就是一个refercen啊。
其实解决方案就是在扫描控制器之前先扫描dubbo注解。
我加了类,也不好使啊,还是空
引用来自“刚毕业的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"/>
祝成功
层主解决了吗
@plugin 解决了,好像不是这的问题……
引用来自“刚毕业的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"/>
祝成功
但是 还是没成功!