加入 maven
依賴,這里使用的 springfox.version
版本是 2.7.0
(2.9.2 有問題),swagger.version
版本是 1.5.20
(需要手動引入 swagger 相關依賴,避免引入 1.5.13 造成沖突),
swagger-dubbo
版本是 2.0.1
<springfox.version>2.7.0</springfox.version>
<swagger.version>1.5.20</swagger.version>
<spring.dubbo.version>2.0.1</spring.dubbo.version>
<!-- Swagger Core -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-core</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- swagger ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox.version}</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>3.17.6</version>
</dependency>
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>swagger-dubbo</artifactId>
<version>${spring.dubbo.version}</version>
</dependency>
在 SwaggerDubboConfiguration
上加入注解 @EnableDubboSwagger
通過 PropertySource
配合 Configuration
一起使用將 swagger-dubbo.properties
屬性變量注入到 Spring's Environment
JavaConfig
配置如下:
/**
* @Author: zyn
* @Description: PropertySource 配合 Configuration一起使用將屬性注入到 Spring's Environment
* 這里不重寫 addResourceHandler 方法的原因是,在 SwaggerConfiguration 中已經
* 將 classpath:/META-INF/resources/ 添加到了靜態資源目錄,當訪問 swagger-dubbo-ui.html 時
* 默認去 classpath:/META-INF/resources/ 目錄下查找對應的 html
* @Date: Created in 2018-10-31 11:11
* @Modified By:
*/
@Configuration
@EnableDubboSwagger
@PropertySource(value = "classpath:env/swagger-dubbo.properties", ignoreResourceNotFound = true, encoding = "UTF-8")
public class SwaggerDubboConfiguration extends WebMvcConfigurerAdapter {
// @Override
// public void addResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("swagger-dubbo-ui.html")
// .addResourceLocations("classpath:/META-INF/resources/");
// }
}
swagger-dubbo.properties
配置如下
#http請求地址,默認為http://ip:port/h/com.XXX.XxService/method
swagger.dubbo.http=dubbo
#dubbo 服務版本號
swagger.dubbo.application.version = v1.0.0
#dubbo服務groupId
swagger.dubbo.application.groupId = com.xxx
#dubbo服務artifactId
swagger.dubbo.application.artifactId = back-trade-dubbo-provider
#rpc zk調用 or 本地調用
swagger.dubbo.cluster = rpc
#是否啟用swagger-dubbo,默認為true,如果是生產環境就設置為false
swagger.dubbo.enable = true
在 resources
下 新建如下目錄,并加入靜態資源
image.png
-
swagger-ui.html
從如下目錄拷貝
image.png swagger-dubbo-ui.html
從 https://github.com/swagger-api/swagger-ui/blob/master/dist/index.html 拷貝,并修改資源引入路徑(修改為webjar
引入)修改
SwaggerConfiguration
配置文件,繼承WebMvcConfigurerAdapter
,添加資源處理器和靜態資源位置
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
}
訪問 http://localhost:9091/swagger-dubbo-ui.html,結果如下圖
image.png
參考文章
- https://blog.csdn.net/xichenguan/article/details/52794862
- https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=zh-cn#cache-control
- https://qiita.com/kazuki43zoo/items/e12a72d4ac4de418ee37
總結:
- 集成
swagger-dubbo
的時候發現@ApiModel
標記的實體在swagger-dubbo-ui.html
頁面上不顯示的問題,debug 跟蹤源碼發現,只有接口方法返回單個對象的時候,才能掃描到,例如List<TradeDto> test();
不顯示, 而TradeDto test();
顯示 - 由于 dubbo 服務中設置了分組,導致不能進行接口測試,所有設置都不進行分組的話,則可以進行接口測試(同事大神告訴我的,暫時還沒有進行測試)
- 此
swagger-dubbo
查詢接口,實體信息的接口地址是/swagger-dubbo/api-docs
,而不是/swagger-dubbo/swagger.json
image.png