Feign是一个生命是的web service 客户端,使用方式非常简单:接口+注解,spring cloud feign 对feign惊醒了增强使它支持了spring mcv注解。
示例(以下示例结合了Eureka):
引入依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
配置启动类:
@SpringBootApplication @EnableFeignClients public class EurekaConsumerApplication { public static void main(String[] args) { SpringApplication.run(EurekaConsumerApplication.class, args); } }
配置Feign接口:
@FeignClient(name = "eureka-client-peer1") public interface UserService { @RequestMapping(value = "/user/getUser",method = RequestMethod.POST) String getUserInfo(@RequestParam("name") String name); }
配置一个Controoler用户调用:
@RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/getUser") public String getUserInfo(String name){ return userService.getUserInfo(name); } }
1、注解@EnableFeignClients 表示当前程序启动时,会进行包扫描,扫描所有带@FeignClient注解的类并进行处理
2、注解@FeignClient作用于目标借口上:
1)name:指定FeignClirnt名称,如果项目使用Ribbon,name属性会作为微服务的名称,用于服务发现
2)url:通常用于调试,可手动指定@FeignClient调用的地址
3)configuration :指定feign的配置类
4)fallback:指定容错的处理类,如果请求出现错误(例如:超时,报错等),可调用指定的容错处理类,该类必须实现@FeignClient接口
5)path 统一FeignClient的前缀
6)fallbackFactory:用来提供fallback类的工厂类,避免重复代码出现