4. Spring-Cloud-OpenFeign远程调用模块

4. openfeign远程调用模块

4.1. 快速集成OpenFeign

在cloud-api的pom.xml中引入

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

新建df.zhang.api包,api包提供项目下所有RPC接口,引导feign扫描包时,亦可指定包前缀为df.zhang.api,以便快速扫描。

添加UserApi,并提供根据用户名获取用户信息的接口。

import df.zhang.base.BaseApi;
import df.zhang.base.pojo.ApiResult;
import df.zhang.api.dto.output.UserOutputDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 * 管理后台的用户模块远程调用接口。该接口由管理后台应用实现。
 *
 * @author df.zhang Email: 84154025@qq.com
 * @date 2019-04-22
 * @since 1.0.0
 */
@FeignClient(value = "user-api", url = "http://localhost")
public interface UserApi extends BaseApi {

    /**
     * 根据用户名获取用户信息,该用户信息包含密码。用于鉴权模块的用户登录。
     *
     * @param username 用户名
     * @return df.zhang.base.pojo.ApiResult&lt;df.zhang.api.dto.output.UserOutputDTO&gt;
     * @date 2019-04-22 00:30
     * @author df.zhang
     * @since 1.0.0
     */
    @GetMapping("user")
    ApiResult<UserOutputDTO> getByUsername(@RequestParam("username") String username);
}

在类UserApi上添加@FeignClient注解,标明这是一个远程服务,指定服务名称、URL(截止目前尚未使用到eureka服务发现框架);

在方法getByUsername添加@GetMapping注解,标明为openfeign将使用HTTP-GET请求的方式调用远程服务接口。注解基于spring-webmvc,即openfeign支持spring-webmvc的web注解配置。

要点:

  1. 非对象接收参数,应使用注解@RequestParam并指定参数名称(value or name);
  2. 参数为对象的,须使用注解@PostMapping,openfeign会自动发起POST请求,此时@GetMapping无效
  3. 当不同API的注解@FeignClient有相同contextIdserviceIdvaluename时,应该设置spring.main.allow-bean-definition-overriding=true

4.2. 待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值