开发者社区> 问答> 正文

Spring Dubbo 注解无效,空指针403.10 禁止访问:配置无效 

今天采用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注解实例,谢谢!

展开
收起
kun坤 2020-05-27 21:28:47 865 0
1 条回答
写回答
取消 提交回答
  • 消费者的  IDemoService demoService 始终是空指针。 这里是不是不应用dubbo的方式实例化而用spring提供注解@Autowired###### 我成功了,出现空指针的原因是: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学生”的评论

    我成功了,出现空指针的原因是: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学生 我试了你的方法还是报错 ###### @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"/> 祝成功
    你的方法确实管用,调节顺序之后就可以。

    如果其他同学试了这个方法不管用,可以试试加一个Bean。

    @Component

    public class DubboSupport

    {

        @Reference(version="1.0.0")

        protected MemberService memberService;

        

        public MemberService getMemberService(){

            return this.memberService;

        }

    }

    然后在controller中:

      //方式二

        @Autowired

        private DubboSupport dubboSupport;

    这种方法不受顺序影响

    ######我加了类,也不好使啊,还是空######加个 exclude不能解决吗?######其实解决方案就是在扫描控制器之前先扫描dubbo注解。######也遇到了,consumer里面不能注入,不明白为什么,配置里面实例就是一个refercen啊。###### 这篇文章讲的很清楚,我是将dubbo的@Reference注入到Service层。这样就不会与@Controller冲突里了
    http://blog.csdn.net/qq_16414307/article/details/50328481

    2020-05-28 14:49:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载