上一篇,講了SpringClound中的消費者採用Ribbon+Rest來實現,這回咱們用組件Feign來實現服務的消費者,Fegin中也是默認集成了Ribbon的;和Eureka結合也能實現負載均衡;html
依賴前文說的Eureka,service-hello(一個項目,註冊兩個實例)java
在Idea裏,新建項目,選擇Spring initializer.web
下面的pomspring
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
配置properties文件參數;app
#服務端口 server.port=8886 #註冊服務中心地址 eureka.client.service-url.defaultZone=http://localhost:8882/eureka/ #註冊服務名 spring.application.name=service-feign
啓動類以下:負載均衡
@EnableDiscoveryClient @EnableFeignClients //開啓Feign的功能: @SpringBootApplication public class SpringCloundEurekaFeginExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringCloundEurekaFeginExampleApplication.class, args); } }
而後咱們定義一個fegin的接口,在這個接口中咱們經過@ FeignClient(「服務名」)來實現消費服務提供者;spring-boot
//表明改接口用費"service-hello"的服務 提供 @FeignClient(value = "service-hello") public interface IFeginService { @RequestMapping(value = "/index") public String index(); }
咱們再在fegin項目中暴露一個訪問接口,controller;編碼
@RestController public class FeginController { @Autowired private IFeginService feginService; @RequestMapping("/index") public String index(){ return feginService.index(); } }
代碼基本編寫完成,下面咱們來啓動項目;Eureka,service-hello(兩個實例),最後啓動service-fegin;url
Feign整合了Ribbon和Hystrix,此外,Spring Cloud還對Feign提供了Spring MVC註解的支持,也使得咱們在Web中能夠使用同一個HttpMessageConverter
spa
總起來講,Feign具備以下特性: