初识Feign

作者: 小丑皇_0624 | 来源:发表于2021-08-10 17:38 被阅读0次

初识Feign

java版本:1.8

前言

在JAVA开发时,我们通常要用到同事写的程序。之前用restTemplate可以实现这一功能,但是过程过于繁琐。其过程如下:https://www.jianshu.com/p/f03d6e724e4a。因此我们用feign代替,非常方便。

所以,feign是在程序调用程序时应用的。

程序调用程序是通过接口调用的。调用者需要知道被调用者Controller层的具体url。

/**

* @return an absolute URL or resolvable hostname (the protocol is optional).

*/

Stringurl()default"";

那为什么不把这些url全部交给前端,而要在后端程序调来调去呢?

这是因为如果时前端有所有接口,那么前端有所有数据,这样数据就流失了。

有的代码里没给具体url,这是因为他们通过“name"或"value"这些"服务id"调用。

/**

* @return The service id with optional protocol prefix. Synonym for {@link #value()

* value}.

*/

@AliasFor("value")

Stringname()default"";

核心代码

我将要调用的程序时对redis数据库的CRUD+。具体点链接:https://www.jianshu.com/p/d33ec6690871

@org.springframework.stereotype.Service

@FeignClient(name="jerryniu",url="http://127.0.0.1:8000/redis")

publicinterfaceService{

//add

@PostMapping("/add")

publicvoidSet(@RequestParam(value="company")Stringcompany1,@RequestBodyEmployeeemployee);

//select

@GetMapping("/showall")

publicStringget(@RequestParam(value="company")Stringcompany);

//update

@PutMapping("/update")

publicvoidupdate(@RequestParam(value="company")Stringcompany,@RequestBodyEmployeeemployee);

//delete

@DeleteMapping("/delete")

publicvoiddelete(@RequestParam(value="company")Stringcompany,@RequestBodyEmployeeemployee);

}

调用Service中的Set方法就是发送一个url请求:

http://127.0.0.1:8000/redis/add?company=company1

调用这里的其他方法同理。不难发现,这其实就相当于在postman上调用接口。

注意,RequestParam一定要写value。

之后在Controller层调用这些接口,并且在主启动类加上@EnableFeignClients注解,让它来找我们的FeignClient。我们调用者就写好了。

重新理一下逻辑:我们有调用者和被调用者,调用的实现由Feign来管,我们只要告诉调用者被调用者接口的具体url,装上Feign,就能通过调用者调用被调用者。

所以,我们通过调用者Controller层定义的url调用调用者的实现层,调用者的实现层通过Feign调用被调用者的Controller层,以此实现程序与程序之间方便的调用。

相关文章

网友评论

    本文标题:初识Feign

    本文链接:https://www.haomeiwen.com/subject/kgkfbltx.html