dubbo2.7+如何集成swagger
这里写自定义目录标题
dubbo2.7+包名从com.alibaba换成了org.apache。https://github.com/Sayi/swagger-dubbo 的version2.0.1 不兼容dubbo2.7+,包中引用了是dubbo2.6包。
dubbo2.7集成swagger,需要将swagger-dubbo2.0.1中类引用修改下,还需将ReferenceManager类中contexts改为大写CONTEXTS
原配置:
<dependency> <groupId>io.swagger</groupId> <artifactId>swagger-core</artifactId> <version>1.5.16</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.0</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency>
修改后
<dependency> <groupId>io.swagger</groupId> <artifactId>swagger-core</artifactId> <version>1.5.20</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.0</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency>
DubboPropertyConfig类
import com.alibaba.dubbo.config.ApplicationConfig;
改为
import org.apache.dubbo.config.ApplicationConfig;
ReferenceManager类
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.spring.ServiceBean;
import com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory;
改为
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.spring.ServiceBean;
import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
public Object getProxy(String interfaceClass) { Set<Entry<Class<?>, Object>> entrySet = interfaceMapProxy.entrySet(); for (Entry<Class<?>, Object> entry : entrySet) { if (entry.getKey().getName().equals(interfaceClass)) { return entry.getValue(); } } for (ServiceBean<?> service : services) { if (interfaceClass.equals(service.getInterfaceClass().getName())) { ReferenceConfig<Object> reference = new ReferenceConfig<Object>(); reference.setApplication(service.getApplication()); reference.setRegistry(service.getRegistry()); reference.setRegistries(service.getRegistries()); reference.setInterface(service.getInterfaceClass()); reference.setVersion(service.getVersion()); interfaceMapProxy.put(service.getInterfaceClass(), reference.get()); return reference.get(); } } return null; }
改为
public Object getProxy(String interfaceClass) { Set<Entry<Class<?>, Object>> entrySet = interfaceMapProxy.entrySet(); for (Entry<Class<?>, Object> entry : entrySet) { if (entry.getKey().getName().equals(interfaceClass)) { return entry.getValue(); } } for (ServiceBean<?> service : services) { if (interfaceClass.equals(service.getInterfaceClass().getName())) { ReferenceConfig<Object> reference = new ReferenceConfig<Object>(); reference.setApplication(service.getApplication()); reference.setRegistry(service.getRegistry()); reference.setRegistries(service.getRegistries()); reference.setInterface(service.getInterfaceClass()); reference.setVersion(service.getVersion()); reference.setGroup(service.getGroup()); reference.setRetries(service.getRetries()); reference.setActives(service.getActives()); reference.setCache(service.getCache()); // 集群方式 reference.setCluster(service.getCluster()); reference.setLayer(service.getLayer()); reference.setTimeout(service.getTimeout()); reference.setConnections(service.getConnections()); // 负载均衡策略 reference.setLoadbalance(service.getLoadbalance()); interfaceMapProxy.put(service.getInterfaceClass(), reference.get()); return reference.get(); } } return null; }
最重要的是:ReferenceManager类中
Field field = SpringExtensionFactory.class.getDeclaredField(“contexts”);
改为
Field field = SpringExtensionFactory.class.getDeclaredField(“CONTEXTS”);
然后将项目打包,按照https://github.com/Sayi/swagger-dubbo的配置
简单修改后:https://github.com/hjnjmjkj/swagger-dubbo.git
- Dubbo2.7源码分析-如何发布服务
- 探讨Dubbo与Swagger的集成
- 如何使用Dubbo服务和集成Spring
- dubbox-swagger集成
- Dubbo2.7源码分析-Dubbo是如何整合spring-framework的
- Dubbo是如何集成Zookeeper
- 如何制作集成SP的winxp的CD安装盘
- [原创]如何在FineUI中集成jQuery UI的AutoComplete组件
- 【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!
- Spring boot 集成Dubbox的方法示例
- Python2.7如何从包含汉字和数字的字符串中截取数字
- 如何在自己的信息管理系统里集成第三方权限控制组件 - 设计一个漂亮的WEB界面
- 如何用CruiseControl.Net来进行持续化集成(3)
- WebApi 集成 Swagger
- 如何在CentOS 6上安装Python 2.7 + Ansible
- BPEL4WS如何无缝的集成到ESB中
- Anaconda集成的Jupyter notebook消失,该如何使用Jupyter?
- 如何更好地学习dubbo源代码
- IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求
- springboot 集成swagger