提示:
由於下邊的一些描述用到了一篇博客的流程,建議大家先瀏覽這篇博客的2.6之前的內容。博客鏈接
報錯場景:
- 在網上照着一篇大佬的博客學習spring cloud時遇到的錯誤
- 大佬博客鏈接
- 是在博客2.6.節中實現設置統一的hystrix fallback接口時出現的異常
- 作者在創建回調類ItemServiceFallback實現fegin客戶端ItemFeignClient類的時候編寫的降級方法如下
package com.zpc.order.fallback;
import com.zpc.order.entity.Item;
import com.zpc.order.feign.ItemFeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
/**
* 此類中的方法專門用於服務降級,該類一般要實現調用遠程服務的接口(這樣保證方法名一致)
*/
@Component
public class ItemServiceFallback implements ItemFeignClient {
/**
* 服務降級的方法要和原方法一致(名稱、參數列表)
* @param id
* @return
*/
@Override
public Item queryItemById(@PathVariable("id") Long id) {
return new Item(null, "服務降級方法queryItemById", null, "服務降級方法queryItemById", null);
}
}
注意以上代碼的下邊這行畫刪除線的這裏:
return new Item(null, “服務降級方法queryItemById”, null, “服務降級方法queryItemById”, null);
我寫的代碼如下:
報錯信息爲說是未定義,但是這個實體類中絕對是定義了的,之後根據eclipse提示對第一個null進行了強轉操作解決報錯。
正式開始測試
- 按照那篇博客的提示在進行關閉item服務測試fallback是否配置成功的時候出現了異常
- 正確結果應爲
- 異常信息
"ItemFeignClient#queryItemById(Long) failed and fallback failed. - 我的解決辦法,將
return new Item((Long) null, "服務降級方法queryItemById", null, "服務降級方法queryItemById", null);
改爲
return new Item(id, "服務降級方法queryItemById", null, "服務降級方法queryItemById", null);
具體詳細代碼如下:
package com.libiy.order.feign.impl;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import com.libiy.order.entity.Item;
import com.libiy.order.feign.ItemFeignClient;
/**
* 此類方法專門用於降級服務,該類一般要實現調用遠程服務的接口(這樣保證方法名一致)
* @author Administrator
*
*/
@Component
public class ItemServiceFallback implements ItemFeignClient {
/**
* 服務降級的方法要和原方法名一致(名稱、參數列表)扯犢子
*/
@Override
public Item queryItemById(@PathVariable("id") Long id) {
// TODO Auto-generated method stub
return new Item(id, "服務降級方法queryItemById", null, "服務降級方法queryItemById", null);
}
}
錯誤成功解決!
具體原因我也不太清楚,望大佬指點?