# dubbo-swagger
**Repository Path**: bigfacecat-zhouning/dubbo-swagger
## Basic Information
- **Project Name**: dubbo-swagger
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 1
- **Created**: 2019-12-04
- **Last Updated**: 2025-07-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
**实现原理**
使用javassist生成dubbo服务的controller注册到容器,然后这些服务生成的controller就可以被swagger扫描
**添加maven坐标**
```xml
io.github.springstudent
dubbo-swagger
1.2.0
```
**注解开启dubbo-swagger**
```java
@EnableDubboSwagger(mergeParam = true,requestPathPrefix = "pass", classPackage = "io.github.springstudent.web", includeApis = {"HelloApiService"})
```
```java
@Target(TYPE)
@Retention(RUNTIME)
@Import(DubboSwaggerRegistar.class)
public @interface EnableDubboSwagger {
/**
* 用于配置javassist生成的字节码存储地址,
* 该包位置必须是已存在的包且能够被扫描到
* 配置示例:com.gysoft.file.file.controller
* @return String
*/
String classPackage();
/**
* 请求服务地址的前缀配置,比如你有一个dubbo service的方法名称为pageQuery,
* requestPathPrefix配置为pass,那么在请求该方法时的path会变成/pass/pageQuery
* 配置示例:pass
* @return String
*/
String requestPathPrefix() default "";
/**
* 用于开启合并参数,为什么要开启合并参数?因为:dubbo api的参数比较复杂时,
* 生成的controller会有多个@RequestBody,SpringMVC不支持两个或者以上的@RequestBody传参,
* 在开启合并参数的场景下会将多个@RequestBody参数合并成一个。
* @return boolean
*/
boolean mergeParam() default true;
/**
* 用于指定生成swagger api的dubbo api服务名称,使用dubbo api的类名称进行配置,
* 不配置则扫描全部dubbo api服务
* 配置示例:{"HelloApiService","TestApiService"}
* @return String[]
*/
String[] includeApis() default {};
```
**示例:dubbo-swagger-demo**
启动服务成功后,访问地址http://localhost:7778/swagger-ui/index.html#/ 以$dubbocontroller结尾的就是dubbo服务生成的swagger接口
**启动慢**
当dubbo api比较多时项目可能会启动比较慢,这是由于需要javassist创建的class太多导致的,如果有必要的话通过配置@EnableDubboSwagger的includeApis配置,只创建指定的dubbo
api的controller来提升项目启动速度