在請求或者返回引數的物件中,會出現一些屬性對應提列舉型別,比如:狀態、優先順序等等。
如果在@apimodelproperty裡編號,會出現少寫漏寫等情況,這樣api文件資訊就不全面。
動態的獲取列舉型別資訊,通過攔截生成swagger doc的過程,在這個過程判斷字段是否是列舉字段,遍歷完後設定到description中
對數值和列舉做替換
@component
@primary
@slf4j
public
class
swaggerdisplayconfig
implements
modelpropertybuilderplugin")
private boolean enableswagger;
@override
public
void
(modelpropertycontext context)
//獲取當前欄位的型別
final class fieldtype
= context.
getbeanpropertydefinition()
.get()
.getfield()
.getrawtype()
;//為列舉字段設定注釋
descforenumfields
(context, fieldtype);}
/** * 為列舉字段設定注釋
*/private
void
descforenumfields
(modelpropertycontext context, class fieldtype)if
(context.
getbeanpropertydefinition()
.ispresent()
)//沒有@apimodelproperty 或者 notes 屬性沒有值,直接返回if(
!annotation.
ispresent()
|| stringutils.
isblank
((annotation.
get())
.notes()
))//@apimodelproperties中的notes指定的class型別
class rawprimarytype
;try
catch
(classnotfoundexception e)
//如果對應的class是乙個@swaggerdisplayenum修飾的列舉類,獲取其中的列舉值
object[
] subitemrecords = null;
swaggerdisplayenum swaggerdisplayenum = annotationutils
.findannotation
(rawprimarytype, swaggerdisplayenum.
class);
if(null != swaggerdisplayenum && enum.
class
.isassignablefrom
(rawprimarytype))if
(null == subitemrecords)
final list
displayvalues = arrays.
stream
(subitemrecords)
.filter
(objects:
:nonnull)
.map
(item -
>).
filter
(objects:
:nonnull)
.collect
(collectors.
tolist()
);string jointext =
" ("
+ string.
join
("; "
, displayvalues)
+")"
;try
catch
(exception e)
final resolvedtype resolvedtype = context.
getresolver()
.resolve
(fieldtype)
; context.
getbuilder()
.description
(jointext)
.type
(resolvedtype);}
@override
public
boolean
supports
(documentationtype documentationtype)
}
指明需要顯示在swagger上的列舉
@target()
@retention
(retentionpolicy.runtime)
public @inte***ce
swaggerdisplayenum
@swaggerdisplayenum()
public
enum codedenum
@override
public string tostring()
}
在對應屬性上的@apimodelproperty中,notes寫明對應的列舉類的路徑
Num 2 列舉 窮舉 演算法
可預先確定候選答案的數量 候選答案的範圍在求解之前必須有乙個確定的集合。例項1 填數遊戲 演算法描述題 x 算 題題題題題題 include stdafx.h include int main getchar return 0 例項2 填運算子 5 5 5 5 5 5 由於算術表示式的特殊性,在程式...
藍橋杯備戰(2)列舉專題
字串處理 字串的實用函式 二分法對列舉的優化 查詢 核心 int left 0,right x,mid x表示二分物件的長度 mid left right 2 while left right else if mid標記對列舉的優化 flag n.標記 標識 作為乙個指示針對陣列中所需要的元素進行標...
6 1 列舉物件屬性的工具函式
extend o,p 惡性合併,用p中的同名屬性覆蓋掉o中的同名屬性var p1 var p2 惡性合併,即 存在同名屬性時,覆蓋掉o中的屬性 function extend o,p 返回合併後的物件 return o var res extend p1,p2 console.log p1 p1 被...