1. 程式人生 > >springcloud之Feign實現聲明式REST調用

springcloud之Feign實現聲明式REST調用

web 服務器列表 from pub 模板 客戶端 tap dep clas

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)即可。

springcloud之Feign實現聲明式REST調用