由於將來的項目將使用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部分~
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
">
<!-- 提供方應用信息,用於計算依賴關係 -->
<span style="white-space:pre"> </span><dubbo:application name="dubbo_logicprovider" />
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span><!-- 使用zookeeper註冊中心暴露服務地址 -->
<span style="white-space:pre"> </span><dubbo:registry address="zookeeper://192.168.1.209:2181" />
<span style="white-space:pre"> </span><!-- 用dubbo協議在20880端口暴露服務 -->
<span style="white-space:pre"> </span><dubbo:protocol name="dubbo" port="20881" />
<context:component-scan base-package="com.dhy.App"/>
<dubbo:annotation package="com.dhy.App.dao" />
</beans>