1. 程式人生 > >springcloud之Feign實現宣告式REST呼叫

springcloud之Feign實現宣告式REST呼叫

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