初识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层,以此实现程序与程序之间方便的调用。