@feignclient名字沖突
在啟動springcloud項目是遇到
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
這樣一個異常
經過研究,解決方法如下
1、在配置文件中增加配置
1
|
spring.main.allow-bean-definition-overriding= true |
2、在feignclient注解中加個字段,紅色部分
1
|
@FeignClient (value = “provider-demo3-ribbon”, path = “/dev”, contextId=“tt1”) |
@FeignClient同一個name,多個配置類
我使用的spring-cloud-starter-openfeign的版本是2.0.0,然后使用@FeignClient的時候是不能一個name多個配置類的,后來也是從網絡查找了各種網友的方法,反正就是歪門邪道的各種都有。但是還是官網給的方法比較靠譜。
解決方案
1、添加配置
1
|
spring.main.allow-bean-definition-overriding= true |
2、這樣允許同名的bean存在,但是不安全,不推薦。(來自網絡,未測試)在openfeign高版本2.2.1中@FeignClient里面添加了新屬性ContextId,這樣使用這個屬性也是可以的,官網有這個例程。
3、官網提供的另外一種就是手動創建Feign客戶端,如下就是,(官網)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@Import (FeignClientsConfiguration. class ) class FooController { private FooClient fooClient; private FooClient adminClient; @Autowired public FooController(Decoder decoder, Encoder encoder, Client client, Contract contract) { this .fooClient = Feign.builder().client(client) .encoder(encoder) .decoder(decoder) .contract(contract) .requestInterceptor( new BasicAuthRequestInterceptor( "user" , "user" )) .target(FooClient. class , "https://PROD-SVC" ); this .adminClient = Feign.builder().client(client) .encoder(encoder) .decoder(decoder) .contract(contract) .requestInterceptor( new BasicAuthRequestInterceptor( "admin" , "admin" )) .target(FooClient. class , "https://PROD-SVC" ); } } |
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/a854517900/article/details/107387309