SpringCloud(九)服务消费者Feign

it2022-05-05  83

什么是Feign: 声明式的伪Http客户端,使得写http客户端变得简单使用Feign只要创建一个接口并注解就好,有可插拔的注解特性,可使用Feign注解和JAX-RS注解支持可插拔的编码器和解码器整合了Ribbon,有负载均衡的能力整合了Hystrix,有熔断能力   创建一个Feign模块: <!--引入eureka、feign、web的start--> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies> 很普通的注册,没别的了: server: port: 8801 #注册到eureka的服务器名称 spring: application: name: nohairLoss-feign-client #服务注册到eureka地址 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ 启动类,加三个注解,springboot的启动类,注册到eureka,feign的客户端。 @SpringBootApplication @EnableEurekaClient @EnableFeignClients public class ServerFeignApplication { public static void main(String[] args){ SpringApplication.run(ServerFeignApplication.class,args); } } 写service: 这里面有个坑 https://github.com/spring-cloud/spring-cloud-netflix/issues/861 就是用@RequestParam不行,用@PathVariable要加上value属性 有一些比较疑惑的点是,Feign有点像远程调用,在service里面调用别的controller的,service不用谢实现类,可能是因为Feign有啥子特殊处理? 然后还有就是,Service里面的@FeignClient指定了要掉那个服务,那么还要不要加controller上面的路径/user什么的? 远程调用,restFul风格数据格式传输会有问题 是的restFul传输是个坑,不用在controller上加/user了 //加此注解表示我要调用,注册到eureka里面的哪个服务,里面写服务名 @FeignClient("noHairLoss-eurake-user") public interface UserService { /** * 注解中指定要调用哪个接口,参数正常写就好。 * @param emoji * @return */ @RequestMapping(value="/user/judgeEmoji/{emoji}",method = RequestMethod.GET) public Object judgeEmoji(@PathVariable(value = "emoji")String emoji); }

 

   

转载于:https://www.cnblogs.com/wzdnwyyu/p/11180535.html

相关资源:SpringCloud-创建服务消费者-Feign方式示例代码.zip

最新回复(0)