由于将来的项目将使用spring boot技术为主题,这几天尝试了一下springboot+dubbo来完成业务架构的分层,这篇文章主要记录springboot搭建过程中遇到的dubbo空指针问题。
首先建议遇到此问题的通道,看一下这篇文章
http://www.oschina.net/question/1011127_144093?fromerr=7pRd3NKv
这篇文章虽然没有解决掉springboot的配置问题,但是为解决这个问题提供了思路,springboot+dubbo的空指针问题,主要原因:spring 扫描的时候根本无法识别@Reference ,同一方面,dubbo的扫描也无法识别Spring @Controller ,所以两个扫描的顺序要排列好,如果先扫了controller,这时候把控制器都实例化好了,再扫dubbo的服务,就会出现空指针。
下面提供一下代码:
dubbo-provider.xml:提供者先扫描spring框架,完成spring部分的扫描,然后将为dubbo框架提供服务;消费者部分相反,先扫描dubbo服务,后扫描spring部分~
<mvc:annotation-driven /> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="dubbo-consumer" owner="programmer" organization="dubbox" /> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <dubbo:consumer timeout="30000" /> <!-- <dubbo:reference id="demoService" interface="com.dubbo.service.DemoService"/> --> <dubbo:annotation package="com.dubbo.controller" /> <!-- 把标记了@Controller注解的类转换为bean --> <context:component-scan base-package="com.dubbo.controller" />
产考:https://blog.csdn.net/zhou_java_hui/article/details/53039491