一 .概述
在之前我们使用的Ribbon和RestTemplate帮助我们实现微服务的调用,但是这种方式我们需要自己维护很多的URl信息,springcloud整合Feign帮助我们实现一种声明式的调用.
二 .环境搭建
[1]引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
[2]编写Feign的接口
@FeignClient("cloud-producer") public interface UserFeign { @GetMapping("/user/{id}") User queryUserByid(@PathVariable("id") int id) ; }
其实从上面的接口之中,我们就能发现实际上我们就是伪造了一个接口,包括微服务的名称和URL信息.
[3]启动类
@SpringBootApplication @EnableEurekaClient @EnableFeignClients @RibbonClient(value="cloud-producer",configuration=RibbonConfig.class) public class ConsumerStarter { public static void main(String[] args) { SpringApplication.run(ConsumerStarter.class, args); } @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } }
我们添加了一个注解,表示启动Feign的接口代理.
@RestController public class UserController { @Resource private UserFeign feign; @GetMapping("user/{id}") public User queryUser(@PathVariable("id") int id) { return feign.queryUserByid(id); } }
现在我们调用微服务的时候,直接使用Feign接口就可以直接调用了.