温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

@feignclient名字冲突的解决方案是什么

发布时间:2021-10-21 18:48:00 来源:亿速云 阅读:301 作者:柒染 栏目:开发技术

今天就跟大家聊聊有关@feignclient名字冲突的解决方案是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

@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,这样使用这个属性也是可以的,官网有这个例程。

@feignclient名字冲突的解决方案是什么

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

@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");
    }
}

看完上述内容,你们对@feignclient名字冲突的解决方案是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI