SpringCloud中Feign的适配器的实现方案

作者阿里云代理 文章分类 分类:linux图文教程 阅读次数 已被围观 347

实现方案

首先我们需要将服务的名称进行单独的配置,可以方便的进行切换和扩展,我们使用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包,引入就可使用。

本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。

我有话说: