SpringCloud中Feign的适配器的实现方案
SpringCloud 实现 方案 适配器 Feign
2023-09-27 14:21:58 时间
前言
最近在做微服务的项目,各个系统之间需要进行调用,然后用一个适配器来实现服务之间的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: 1000
ribbon:
ConnectTimeout: 30000
ReadTimeout: 30000
之后我们建立一个feign的接口。
@FeignClient(value = "${server-name.feignDemo}")
@Component
public interface IDemoFeign {
@PostMapping("/demo/list")
public List<Demo> findDemoListByQueryVO(
@RequestBody DemoFeignQueryVO demoFeignQueryVO);
}
我们通过用$取值的方式来获取服务的名称。接口内的方法必须与服务中的方法的映射一模一样。这里需要注意的问题是参数必须要用@RequestBody或者@RequestParam来接取。
接下来建立一个controller的类。
@Component
public class DemoApi {
@Autowired
private IDemoFeign iDemoFeign ;
public List<Demo> findDemoListByQueryVO(DemoFeignQueryVO demoFeignQueryVO){
return iDemoFeign .findDemoListByQueryVO(demoFeignQueryVO);
}
}
我们在调用的使用通过controller进行调用,这样,我们以后如果接口有什么问题,可以直接改接口,不用改调用项目的代码。
最后,我们建立主启动类,在主启动类中,配置我们刚才建立的controller类,这样打成jar包调用的时候,注入一个主启动类,然后就可以调用其他的api。
主启动类如下:
@SpringBootApplication
@EnableFeignClients
public class ApiAdapter {
public static void main(String[] args) {
SpringApplication.run(ApiAdapter.class, args);
}
@Autowired
public DemoApi demoApi ;
}
我们需要注意的就是需要加上注解@EnableFeignClients。
实现方案结束,将其打成jar包,引入就可使用。
相关文章
- SpringCloud 面试题 (持续更新、吐血推荐)
- 基于SpringCloud实现Shard-Jdbc的分库分表模式,数据库扩容方案
- SpringCloud微服务(02):Ribbon和Feign组件,实现服务调用的负载均衡
- [转]「SpringCloud」基于MybatisPlus插件实现多租户功能
- Spring+SpringBoot+SpringCloud 全攻略
- 阿里内部最新教材:Spring+SpringBoot+SpringCloud 全家桶第五版
- SpringCloud电商项目开发完整流程
- SpringCloud之Nacos服务发现(十七)
- SpringCloud Config(配置中心)实现配置自动刷新(十六)
- 【毕业设计_课程设计】基于SpringCloud+Hadoop+Vue的企业级网盘系统设计与实现
- 2023年springcloud面试题之Ribbon(第四部分)
- SpringCloud学习笔记推荐
- SpringCloud集成mongodb实现增删改查、分页、排序、聚合操作
- SpringCloud之Spring Cloud Stream:消息驱动
- springcloud 学习
- SpringBoot与SpringCloud对应版本及官方查询方法
- 快速搭建微服务项目——SpringBoot+SpringCloud(使用maven方式搭建)