常見異常:
NoSuchBeanDefinitionException: No qualifying bean of type
只要是新增@FeignClient引起的,只要在SpringBoot的啓動類上添加@EnableFeignClients註解就能解決,但是注意如下:
1、@FeignClient所在的包路徑不從屬於Application.java所在的package時,會導致feign調用不,必須在@EnableFeignClients中指定路徑;
2、@EnableFeignClients中一旦指定了basePackages,默認從屬於Application.java所在的package的@FeignClient所在的包路徑也要指定;
3、一般情況下,項目中需要對外暴露Rest接口,定義的Api接口都是從屬於Application.java所在的package;如果調用第三方的Rest接口,方案1是引入對方的jar包,然後在@EnableFeignClients中指定路徑;方案2是不引入對方包,在代碼中自定義接口(包路徑可控,第三方包拷貝過來即可),畢竟說到底底層都是Http調用;我們指定@EnableFeignClients註解中的路徑是爲了Springboot的自動裝配和Bean託管用的。
4、定義@FeignClient的時候,常用openfeign或者是netflix.feign的包,項目中會出現兩個共存的情況,導致Springboot託管Bean有問題,處理的方案就是:統一以本項目爲準,比如項目中使用了openfeign,如果引入第三方包是netflix.feign,則不引入依賴包,直接重寫對方接口(拷貝對方代碼到項目中,修改@FeignClient依賴包即可);