SpringCloud中Feign的适配器的实现方案
发布日期:2021-05-09 03:55:28 浏览次数:18 分类:博客文章

本文共 1656 字,大约阅读时间需要 5 分钟。

前言

最近在做微服务的项目,各个系统之间需要进行调用,然后用一个适配器来实现服务之间的feign调用,使用适配器进行统一管理。

实现方案

首先我们需要将服务的名称进行单独的配置,可以方便的进行切换和扩展,我们使用bootstrap.yml来进行配置,这样引入jar包的时候,可以将配置互补到我们本身项目的application.yml中。

在我们的bootstrap.yml中进行配置。

## 配置的服务名称server-name:  # 配置在eureka中注册的服务名称  feignDemo: demo

我们这里配置了一个demo,demo是spring.application.name。我们需要调用demo项目中的接口。

然后配置feign与ribbon

feign:  hystrix:   threadpool:    default:     coreSize: 100    enabled: true    command:      default:       execution:         isolation:          thread:           timeoutInMilliseconds: 30000      circuitBreaker:       requestVolumeThreshold: 1000ribbon: ConnectTimeout: 30000 ReadTimeout: 30000

之后我们建立一个feign的接口。

@FeignClient(value = "${server-name.feignDemo}")@Componentpublic interface IDemoFeign {    @PostMapping("/demo/list")    public List
findDemoListByQueryVO( @RequestBody DemoFeignQueryVO demoFeignQueryVO);}

我们通过用$取值的方式来获取服务的名称。接口内的方法必须与服务中的方法的映射一模一样。这里需要注意的问题是参数必须要用@RequestBody或者@RequestParam来接取。

接下来建立一个controller的类。

@Componentpublic class DemoApi {	@Autowired	private IDemoFeign iDemoFeign ;        public List
findDemoListByQueryVO(DemoFeignQueryVO demoFeignQueryVO){ return iDemoFeign .findDemoListByQueryVO(demoFeignQueryVO); }}

我们在调用的使用通过controller进行调用,这样,我们以后如果接口有什么问题,可以直接改接口,不用改调用项目的代码。

最后,我们建立主启动类,在主启动类中,配置我们刚才建立的controller类,这样打成jar包调用的时候,注入一个主启动类,然后就可以调用其他的api。
主启动类如下:

@SpringBootApplication@EnableFeignClientspublic class ApiAdapter {    public static void main(String[] args) {        SpringApplication.run(ApiAdapter.class, args);    }    @Autowired    public DemoApi demoApi ;}

我们需要注意的就是需要加上注解@EnableFeignClients。

实现方案结束,将其打成jar包,引入就可使用。

上一篇:mysql中concat函数的使用相关总结
下一篇:maven将xml文件一起打包

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月20日 15时48分19秒