記錄一次項目中出現的問題,包啓動時報這個
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError
看着嚇了一跳咋還StackOverflowError了,後面用最笨的方法,將新增的代碼一點一點去掉後,發現了原因
是整合swagger時,兩個接口的入參引起來的循環依賴導致的。
比如,兩個接口入參是下面這樣的
@ApiOperation(value = "新增商品",notes = "新增商品方法",response = GoodsVo.class)
@PostMapping("/add")
public void add(@Valid GoodsVo entity) {
}
。。。省略
@ApiOperation(value = "/add",notes = "新增設計案例表方法",response = CaseDesignVo.class)
@PostMapping("/add")
public void add(@Valid CaseDesignVo entity) {
}
然後GoodsVo 裏包含CaseDesignVo 屬性,而CaseDesignVo 裏也包含GoodsVo屬性導致循環依賴報的StackOverflowError。
知道原因後解決就很簡單了,另起兩個bean作爲參數,在後續邏輯裏自己去填充屬性。