詳解spring cloud feign踩坑記錄
1:多客戶端時(shí),feign接口抽取到公共jar中,此時(shí),客戶端的啟動(dòng)類上需要對(duì)該jar中feign所在的包進(jìn)行掃描,要在spring和feign中同時(shí)注冊,否則啟動(dòng)時(shí)會(huì)報(bào):“Consider defining a bean of type '******Feign' in your configuration.”
@SpringBootApplication
@EnableTransactionManagement
@EnableDiscoveryClient
@ComponentScan(basePackages={"com.lcamtech.aidis.feign","com.lcamtech.aiads.dts"})
@EnableFeignClients(basePackages = {"com.lcamtech.aidis.feign"})
@EnableCaching
@MapperScan(basePackages = "com.lcamtech.aiads.dts.mapper")
public class Application extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
重點(diǎn):
@ComponentScan(basePackages={"com.lcamtech.aidis.feign","com.lcamtech.aiads.dts"})
@EnableFeignClients(basePackages = {"com.lcamtech.aidis.feign"})
aidis包為包含feign的jar, 此時(shí)@ComponentScan還需要同時(shí)掃描本項(xiàng)目的包。
2:使用Fegin傳值時(shí),GET變POST
@FeignClient(value = "SERVICE-NAME")
public interface UserAccountFeign {
@RequestMapping(value = "/ac/exist", method = RequestMethod.GET)
public BaseResult isExist(@RequestParam("mobile") String mobile);
}
feign在傳遞時(shí)默認(rèn)會(huì)將數(shù)據(jù)放在RequestBody中,所以會(huì)導(dǎo)致默認(rèn)使用POST請求(及時(shí)@RequestMapping寫著GET也沒用),此時(shí)需要在參數(shù)列表中聲明@RequestParam才能進(jìn)行正常的GET請求。
3:feign請求返回復(fù)雜對(duì)象時(shí)
如:
public class Result{
private string code;
private string message;
private Object data;
//get/set
}
問題描述:當(dāng)請求返回的是Result的一個(gè)對(duì)象時(shí),對(duì)于該對(duì)象內(nèi)部的data值,會(huì)變成一個(gè)linkedHashMap,并不會(huì)被轉(zhuǎn)換成相應(yīng)的類對(duì)象,若直接強(qiáng)轉(zhuǎn)會(huì)報(bào)類型錯(cuò)誤。
解決方法1:簡單轉(zhuǎn)換
/**
* @Description: 將數(shù)據(jù)轉(zhuǎn)換到相應(yīng)的容器
* @param bean
* @param clazz
* @return
* @throws
* @author SunF
* @date 2018/6/20 10:28
*/
public static <T> T convertValue(Object bean, Class<T> clazz){
try{
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(bean, clazz);
}catch(Exception e){
log.error("錯(cuò)誤的轉(zhuǎn)換:BeanUtil.convertValue() --->" + e.getMessage());
return null;
}
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java如何將處理完異常之后的程序能夠從拋出異常的地點(diǎn)向下執(zhí)行?
今天小編就為大家分享一篇關(guān)于Java如何將處理完異常之后的程序能夠從拋出異常的地點(diǎn)向下執(zhí)行?,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04
IDEA中創(chuàng)建maven項(xiàng)目引入相關(guān)依賴無法下載jar問題及解決方案
這篇文章主要介紹了IDEA中創(chuàng)建maven項(xiàng)目引入相關(guān)依賴無法下載jar問題及解決方案,本文通過圖文并茂的形式給大家分享解決方案,需要的朋友可以參考下2020-07-07
使用MQ消息隊(duì)列的優(yōu)缺點(diǎn)詳解
這篇文章主要介紹了使用MQ消息隊(duì)列的優(yōu)缺點(diǎn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
總結(jié)Java常用加解密方法AES?SHA1?md5
這篇文章主要為大家介紹了Java常用加密方法AES?SHA1?md5總結(jié)及示例demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Feign如何實(shí)現(xiàn)第三方的HTTP請求
這篇文章主要介紹了Feign如何實(shí)現(xiàn)第三方的HTTP請求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

