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

相关文章
相关标签/搜索