先上效果圖:
不同版本的介面在不同的swagger版本分組中,我們通過在請求介面上新增自定義註解來對請求介面的版本分組;然後在構建 docket 時,基於註解的值執行不同的處理邏輯,參考下面**的builddocketwithgroupname
方法。
之前的版本配置是通過如下的**的:
@configuration
@enableswagger2
@enablewebmvc
public
class
swaggerconfig
@bean
public docket vinfo210()
@bean
public docket vinfo220()
@bean
public docket vinfo230()
@bean
public docket v100()
@bean
public docket v201()
private apiinfo buildapiinf()
private docket builddocketwithgroupname
(string groupname)}if
(apiversion.
value()
!= null && apiversion.
value()
.length !=0)
}}apiversion clzzapiversion = input.
gethandlermethod()
.getbeantype()
.getannotation
(apiversion.
class);
if(clzzapiversion != null)}if
(clzzapiversion.
value()
!= null && clzzapiversion.
value()
.length !=0)
}}return
false;}
)//controller路徑
.paths
(pathselectors.
any())
.build();}}
可以看出每在apiversionconstant
中增加乙個版本(即乙個常量值),我們需要在 spring 中註冊乙個對應的docket
;這也太不方便了,既然 spring 的 bean 可以在程式設計時動態注入,那麼就能解決這個問題了。修改**如下:
@configuration
@enableswagger2
@enablewebmvc
public
class
swaggerconfig
implements
initializingbean
private apiinfo buildapiinf()
private docket builddocketwithgroupname
(string groupname)}if
(apiversion.
value()
!= null && apiversion.
value()
.length !=0)
}}apiversion clzzapiversion = input.
gethandlermethod()
.getbeantype()
.getannotation
(apiversion.
class);
if(clzzapiversion != null)}if
(clzzapiversion.
value()
!= null && clzzapiversion.
value()
.length !=0)
}}return
false;}
)//controller路徑
.paths
(pathselectors.
any())
.build()
;}@override
public
void
afterpropertiesset()
throws exception }}
}
值得一提的是,我們這裡通過註解來識別對應介面所屬版本,具體實現參考方法:builddocketwithgroupname。註解可以在 controller 上,也可以在它的方法上,方法上的優先順序大於 controller上的版本註解優先順序。註解在 controller 上預設當前類下的所有方法都屬於這一版本。
下面是註解類的**:
@retention
(retentionpolicy.runtime)
@target()
public @inte***ce
apiversion
;/**
* 介面版本號(對應swagger中的value)
** @return string
*/string[
]value()
default
;}
這裡還有個優化可以做掉,那就是 apiinfo 應該針對不同版本使用不同的值,也就是 buildapiinf 方法。
認認真真學習,做思想的產出者,而不是文字的搬運工。錯誤之處,還望指出!
小公尺8配哪個版本的MIUI?
小公尺8之前我是忠實的魅粉,魅族手機用過m8,mx3,note5,mx6 pro。魅族真的是被聯發科的cpu坑了,一核有難,八核圍觀。入手小公尺8,miui是9,一路跟著系統自動更新,更新到了12。更新12後,手機太卡了,發燙,耗電,有換手機的衝動。後來把手機解鎖了,刷回miui9.5,太流暢了,像...
Spring Quartz實現定時任務的配置方法
1 scheduler的配置 說明 scheduler包含乙個trigger列表,每個trigger表示乙個作業。2 trigger和jobdetail的配置 0 0 0 1 說明 1 cron表示式的格式 秒 分 時 日 月 周 年 可選 欄位名 允許的值 允許的特殊字元 秒 0 59 分 0 5...
spring boot 動態資料來源最簡化的配置!
前言 demo的包結構 一 專案配置相關。1.1 pom.xml 省略,spring boot 版本1.4.3 資料來源配置一 兼預設資料來源 spring.datasource.test1.url jdbc mysql localhost 3306 test1?useunicode true ch...