@FeignClient的别样用法

前言

我们在使用SpringCloud进行FeignClient远程调用的时候,一般需要定义两份接口定义(一份在FeignClient里面定义,一份在Controller里面实现),这时候有一种别样的写法可以通过实现定义的FeignService并加上@Controller或者@ReqeustMapping注解,将FeignClient定义的接口单独提取出来,然后依赖直接调用获取结果


话不多说,直接上代码

一、基本接口定义

基本接口定义放在单独的一个maven项目里面,假设定义其为api

@FeignClient(name = "testFeign", url = "http://127.0.0.1:8080")
public interface LocationFeignService {
	
    @GetMapping("/service/feign/test")
    String feignTest(@RequestParam("userName") String userName);
}

二、Feign接口实现

Feign接口项目属于web项目,项目依赖api项目,在本项目里面实现LocationFeignService接口。同时加上@RestController注解。

@Slf4j
@RestController
public class LocationFeignServiceImpl implements LocationFeignService{

	@Override
    public String feignTest(String userName) {
        return "hello:" + userName;
    }
}

三、调用方使用

新建一个测试web项目,依赖api项目,并直接使用LocationFeignService的feignTest方法。

@Slf4j
@RestController
public class TestController{
	@Autowired
    private OrganizationService organizationService;
    
    @GetMapping("/test")
    public String test(@RequestParam("name") String name) {
    	String result = organizationService.feignTest(name);
        return result;
    }
}

四、测试

我们启动Feign接口项目与测试web项目,假设测试web项目的端口号为8081,此时我们输入地址**【localhost:8081/test?name=小宋】就可以获得结果【hello:小宋】**。
在这里插入图片描述

五、解答

这时候很多人估计会问,为什么我实现定义的Feign接口并加上@RestController注解就能作为一个服务启动,并且可以通过调用Feign接口就能获取到结果。
其实在这里我们的LocationFeignServiceImpl类就相当于一个Controller了,Spring在扫描的时候会向这个类的父类或者接口的注解,如果发现了@GetMapping或者@PostMapping等的注解,就会把这个方法认为是一个请求的Handler。这样做的好处在于,我们只需要定义好Feign接口并且定义其请求方式与请求参数,服务方通过实现该接口就可以暴露服务给到别的服务。调用方就可以直接通过Feign接口去获取结果。

总结

这样的使用方法有点类似于Dubbo,但确实使用起来个人觉得还是挺不错的,有意向的小伙伴们不妨来试试哈。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宋爱秋天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值