声明式服务调用
前面在使用spring cloud时,通常都会利用它对RestTemplate的请求拦截来实现对依赖服务的接口调用,RestTemplate实现了对http的请求封装处理,形成了一套模板化的方法。而spring cloud feign在此基础上做了封装,我们只需要创建一个接口用注解的方式配置它,便可完成对服务方的接口绑定。
在pom.xml中添加依赖:
12 5 6org.springframework.boot 3spring-boot-starter-web 47 10org.springframework.cloud 8spring-cloud-starter-eureka-server 911 15org.springframework.boot 12spring-boot-starter-test 13test 1416 19org.springframework.cloud 17spring-cloud-starter-feign 18
创建主类ApplicationFeign:
1 @EnableFeignClients 2 @EnableDiscoveryClient 3 @SpringBootApplication 4 public class ApplicationFeign { 5 6 7 public static void main(String[] args) { 8 SpringApplication.run(ApplicationFeign.class, args); 9 }10 11 }
定义HelloService接口:
@FeignClient(value = "hello-service")public interface HelloService { @RequestMapping("/hello") String hello(); }
创建ConsumerController:
1 @RestController 2 public class ConsumerController { 3 4 @Autowired 5 HelloService helloService; 6 7 @RequestMapping(value = "/feign-consumer", method = RequestMethod.GET) 8 public String helloConsumer() { 9 return helloService.hello();10 }11 12 }
配置文件:
1 server.port=90012 spring.application.name=feign-consumer3 eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
访问http://localhost:9001/feign-consumer :
通过feign,实现了服务调用。