spring-boot集成dubbo報錯UnsatisfiedDependencyException

    最近研究spring-boot,集成dubbo,純java配置方式,單jar文件運行,開發支持熱部署,一個字「快」。java

@Bean(name = "companyOrgCodeService")
	public ReferenceBean<CompanyOrgCodeService> companyOrgCodeService() {
		ReferenceBean<CompanyOrgCodeService> ref = new ReferenceBean<CompanyOrgCodeService>();
		ref.setProxy("jdk"); // 不設置會報錯,默認使用javassist作代理
		ref.setVersion("1.1");// 設置版本
		ref.setInterface(CompanyOrgCodeService.class);// 設置接口
		// bean.setId("companyOrgCodeService"); // 設置bean id,和方法名同樣

		return ref;
	}

上面的CompanyOrgCodeService是生產者發佈的一個接口,在沒有ref.setProxy("jdk");時,在消費端注入接口總是報錯UnsatisfiedDependencyException  「is not visible from class loader」,很長一串的堆棧錯誤信息。很長時間,進行了各類嘗試,直到看dubbo的官方文檔,注意到Proxy有兩種形式jdk/javassist,改爲jdk就沒報錯了,和提供者的代理類型一致。git

不過這裏對於引用的每一個接口配置,都要寫這麼一句,很麻煩,引用有個統一的配置。以下spring

/**
 * 引用配置
 * 
 * @return
 * @author wei.ss
 */
@Bean
@SuppressWarnings("rawtypes")
public ReferenceConfig referenceConfig(MonitorConfig monitorConfig) {
	ReferenceConfig rc = new ReferenceConfig();
	rc.setProxy("jdk"); // 不設置會報錯,默認使用javassist作代理 
	rc.setMonitor(monitorConfig);
	
	return rc;
}

完整的工程示例,參見spring-boot-jsp-demojsp

相關文章
相關標籤/搜索