最近研究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