集成swagger-ui時參數對象嵌套無限遞歸導致StackOverFlowError的處理辦法

集成swagger-ui時,在項目啓動的時候,如果接口參數的屬性出現嵌套,就會出現無限遞歸,進而導致StackOverFlowError,如下圖:
這裏寫圖片描述

原因在於swagger在讀取參數的時候,如果發現參數的屬性也是一個對象時會繼續進行展開,代碼如下:
這裏寫圖片描述
由此就可能出現我遇到的這種情況:(笑哭)
這裏寫圖片描述
就這樣沒玩沒了的展開,直到內存爆炸~~~

那怎麼解決呢?
在網上找資料的時候看到這麼一篇文章:
springfox-swagger 參數是對象無限遞歸解決方案
作者的解決方案是把遞歸展開的代碼註釋掉,不過我覺得不妥,一是因爲註釋掉,會影響非嵌套對象的正常展開,而是還需要把註釋後的類替換掉原來內置的類,操作上會比較麻煩。
回過頭來再看看代碼,發現有這麼一段:
這裏寫圖片描述

這段的意思就是按照設定的轉換規則把部分類型轉換成指定的類型,然後在篩選需要展開的類型中過濾掉這些類,可以看到代碼中已經內置了14個轉換規則,我猜測可能就是把會出現遞歸的對象給處理掉(沒有具體看),畢竟java原生的很多類也可能是嵌套的吧。既然如此,那是不是可以把我們代碼中出現的嵌套對象也添加到這些規則中呢,哈哈,那是必須的啊,如下:
這裏寫圖片描述

重啓服務,可以了。