spring cloud學習(四) Fegin 的使用


Feign 的使用

什么是Feign?

Feign : Declarative REST clients。
Feign 是一個聲明web服務客戶端,這便得編寫web服務客戶端更容易,使用Feign 創建一個接口並對它進行注解,它具有可插拔的注解支持包括Feign注解與JAX-RS注解,Feign還支持可插拔的編碼器與解碼器,Spring Cloud 增加了對 Spring MVC的注解,Spring Web 默認使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的負載均衡的HTTP客戶端 Feign。(來源於Spring Cloud Netflix 官網文檔)

怎么使用Feign

首先繼續使用上次的”服務注冊中心”與”服務提供者”。接下來,就是將 Fegin 整合到”服務消費者”中。

引入依賴

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>

 

注入注解

在 Spring Boot 主類加入注解@EnableFeignClients開啟 Fegin 功能。

注入接口

創建接口,具體如下:

@Component
@FeignClient(value = "my-service")
public interface ServiceClient {

    @RequestMapping("/service")
    String printf();
}

 

  • 使用@Component注解向 Spring Boot 中注入該組件。
  • 使用@FeignClient("")注解來綁定該接口對應的服務
  • 通過 Spring MVC 的注解來配置服務下的具體實現。

在Controller中調用接口

@RestController
public class ConsumerController {

    @Autowired
    private ServiceClient serviceClient;

    @RequestMapping("/test")
    public String test(){
        return serviceClient.printf();
    }
}

 

最后,啟動”注冊中心”、”服務提供者”、”服務消費者”等工程。訪問 http://localhost:2222/test 就可以在”服務提供者”控制台查看到負載均衡的實現。

注意事項

注意注意注意
當Spring Cloud版本為 Brixton.RELEASE ,會拋出異常:

Attribute ‘value’ in annotation [org.springframework.cloud.netflix.feign.FeignClient] must be declared as an @AliasFor [serviceId], not [name]

 

解決辦法:
將Spring Cloud版本改為 Brixton.SR5 或 Camden.RELEASE 即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM