@feignclient名字冲突的解决方案

网友投稿 512 2022-09-21


@feignclient名字冲突的解决方案

目录@feignclient名字冲突经过研究,解决方法如下@FeignClient同一个name,多个配置类解决方案

@feignclient名字冲突

在启动springcloud项目是遇到

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

这样一个异常

经过研究,解决方法如下

1、在配置文件中增加配置

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

2、在feignclient注解中加个字段,红色部分

@FeignClient(value = “provider-demo3-ribbon”, path = “/dev”, contextId=“tt1”)

@FeignClient同一个name,多个配置类

我使用的spring-cloud-starter-openfeign的版本是2.0.0,然后使用@FeignClient的时候是不能一个name多个配置类的,后来也是从网络查找了各种网友的方法,反正就是歪门邪道的各种都有。但是还是官网给的方法比较靠谱。

解决方案

1、添加配置

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

2、这样允许同名的bean存在,但是不安全,不推荐。(来自网络,未测试)在openfeign高版本2.2.1中@FeignClient里面添加了新属性ContextId,这样使用这个属性也是可以的,官网有jZbsvnJh这个例程。

3、官网提供的另外一种就是手动创建jZbsvnJhFeign客户端,如下就是,(官网)

@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)

http:// .contract(contract)

.requestInterceptor(new BasicAuthRequestInterceptor("admin", "admin"))

.target(FooClient.class, "https://PROD-SVC");

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:每日一课&(OSI七层模型数据封装全过程与物理层)(每日e课英语怎么样)
下一篇:点到点IPSec VPN配置(点到点法式方程的距离)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~