Feign是Netflix开发的声明式、模板化的HTTP客户端,可帮助我们更加便捷、优雅的调用HTTP api。spring cloud对Feign进行了增强,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便:只需要创建一个接口,并在接口上添加一些注解,代码就完成了,Feign支持多种注解,子嗲的或者JAX-RS注解等。
添加maven依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
修改application.yml文件:
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8765 spring: application: name: service-feign
在程序的启动类ServiceFeignApplication ,加上@EnableFeignClients注解开启Feign的功能:
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient @EnableFeignClients public class ServiceFeignApplication { public static void main(String[] args) { SpringApplication.run( ServiceFeignApplication.class, args ); } }
创建一个Feign接口,并添加@FeignClient注解:
@FeignClient(value = "service-hi") public interface SchedualServiceHi { @RequestMapping(value = "/hi",method = RequestMethod.GET) String sayHiFromClientOne(@RequestParam(value = "name") String name); }
@FeignClient注解中的“service-hi”是需要调用的服务名称,会自动使用Ribbon负载均衡,由于使用了Eureka,Ribbon会把服务名解析成Eureka Server服务注册表中的服务,如果不想使用Eureka,可以使用service.ribbon.listofServers属性配置服务器列表。
然后在web controller层直接传入参数并调用SchedualServiceHi.sayHiFromClientOne(name)即可。
原文地址:https://www.cnblogs.com/loveBolin/p/9903255.html
时间: 2024-10-10 17:51:10