Feign 是一种声明式Web服务客户端,底层封装了对Rest技术的应用,通过Feign可以简化服务消费方对远程服务提供方法的调用实现。如图所示:
如何使用Feign:
第一步:在服务消费方添加Feign依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
第二步:在服务消费方的启动类添加注解@EnableFeignClients
第三步:创建一个service接口 接口名:RemoteProviderService
package com.jt.consumer.controller;
@RestController
@RequestMapping("/consumer/ ")
public class FeignConsumerController {
@Autowired
private RemoteProviderService remoteProviderService;
/**基于feign方式的服务调用*/
@GetMapping("/echo/{msg}")
public String doFeignEcho(@PathVariable String msg){
//基于feign方式进行远端服务调用(前提是服务必须存在)
return remoteProviderService.echoMessage(msg);
}
}
第四步:创建一个controller层的包,包名:FeignConsumerController
package com.jt.controller; import com.jt.service.RemoteProviderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/consumer") public class FeignConsumerController { @Autowired private RemoteProviderService remoteProviderService; @GetMapping("/echo/{msg}") public String doFeignEcho(@PathVariable("msg") String msg){ return remoteProviderService.echoMessage(msg); } }
第五步:浏览器访问 http://localhost:8090/consumer/echo/777
有如下效果说明:服务消费方正常调用的服务提供方