从零搭建springCloud--4、消费者使用feign 声明式调用服务提供者

前面我们已经将服务消费者和服务生产者都已经注册到了注册中心,并且注册中心也已经添加的安全认证,下面我们开始让消费者采用声明式的方式调用服务生产者。

首先我们需要在服务消费者里面添加 feign的依赖,当然也可以将依赖添加到我们的父项目中,这样我们的子项目都可以有这个依赖了,以后在每个子项目中都可以使用。springcloud认为一个微服务既可以是生产者也可以是消费者,因此我们的生产者也可以作为消费者去消费别的服务,也就是说我们的每个微服务都会需要使用feign去调用生产者。在这里我是将feign的依赖放在父项目的pom中

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

添加完依赖之后我们在消费者的启动类上添加@EnableFeignClients注解,然后新建一个接口,具体的内容如下所示

@FeignClient(name="provider")
public interface ProviderIndex {

    @RequestMapping(method = RequestMethod.GET, value = "/index")
    String index();
}

其中@FeignClient 注解的name属性指定你所调用的服务的服务名字,即在注册中心中注册的名字。然后在接口中定义方法,之后在方法上面添加springmvc的注解,这里要注意,不能使用@GetMapping类似的组合注解,必须使用@RequestMapping注解并指定请求方式和路径。配置完成之后,将此接口注入到controller中即可使用。

 

上面就是springCloud中使用feign的简单方式,在这里记录一下在配置feign中遇见的问题:

我最开始springBoot和springCloud采用的都是最新版本的,boot使用的是2.1.1.RELEASE版本,cloud使用的是Greenwich.RC1版本,在整合feign的过程中遇见了一个问题,无论怎样配置我定义的feign接口在spring容器中都找不到,因此在controller中无法注入,启动报错,找了很长时间的原因,并且按照网上说的在启动类上添加扫描路径也没有解决,最后把自己的boot版本和cloud版本都降了一个版本才实现,至于新版本为什么出错我还没有找到原因,各位知道原因的朋友看见了可以留言,大家一起学习。

还有就是如果我们自己定义的feign接口和启动类要是不在一个包下面,我们一定要配置启动类上注解@EnableFeignClients的

basePackages属性指定我们feign的包路径

至于想要完成更复杂的功能可以查看官网相关配置,我这里只是实现了最简单的使用feign调用生产者的接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值