@FeignClient注解 中屬性 contextId使用


@FeignClient注解 中屬性 contextId使用

@FeignClient注解 中屬性 contextId
比如我們有個user服務,但user服務中有很多個接口,我們不想將所有的調用接口都定義在一個類中,比如:

Client 1
@FeignClient(name = "optimization-user")
public interface UserRemoteClient {
	@GetMapping("/user/get")
	public User getUser(@RequestParam("id") int id);
}

Client 2
@FeignClient(name = "optimization-user")
public interface UserRemoteClient2 {
	@GetMapping("/user2/get")
	public User getUser(@RequestParam("id") int id);
}

這種情況下啟動就會報錯了,因為Bean的名稱沖突了,具體錯誤如下:

Description:
The bean 'optimization-user.FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

解決方案可以增加下面的配置,作用是允許出現beanName一樣的BeanDefinition。

spring.main.allow-bean-definition-overriding=true

另一種解決方案就是為每個Client手動指定不同的contextId,這樣就不會沖突了。
上面給出了Bean名稱沖突后的解決方案,下面來分析下contextId在Feign Client的作用,在注冊Feign Client Configuration的時候需要一個名稱,名稱是通過getClientName方法獲取的


來源:https://blog.csdn.net/sinat_36454672/article/details/105457670


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM