(三)Fegin聲明式服務調用

上一篇,講了SpringClound中的消費者採用Ribbon+Rest來實現,這回咱們用組件Feign來實現服務的消費者,Fegin中也是默認集成了Ribbon的;和Eureka結合也能實現負載均衡;html

歸納來講,Fegin的區別就是基於註解來實現,具有可插拔的特性;

依賴前文說的Eureka,service-hello(一個項目,註冊兩個實例)java

 

建立Fegin項目;

在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中能夠使用同一個HttpMessageConverterspa

總起來講,Feign具備以下特性:

  • 可插拔的註解支持,包括Feign註解和JAX-RS註解;
  • 支持可插拔的HTTP編碼器和解碼器;
  • 支持Hystrix和它的Fallback;
  • 支持Ribbon的負載均衡;
  • 支持HTTP請求和響應的壓縮。
相關文章
相關標籤/搜索