Feign是一個聲明式的Web服務客戶端,使用Feign可以使得Web服務客戶端的寫入更加方便。
它具備可插拔註釋支持,包括Feign註解和JAX-RS註解、Feign還支持可插拔編碼器和解碼器、Spring Cloud增長了對Spring MVC註釋的支持,並HttpMessageConverters在Spring Web中使用了默認使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign時提供負載平衡的http客戶端。web
Feign利用RestTemplate對http請求進行封裝。spring
實際操做(基於springcloud入門案例):app
1:修改pom文件(添加依賴)spring-boot
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
</dependencies>
2:配置文件(application.yml):
server:
port: 6002
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka
instance:
instance-id: consumer6001
prefer-ip-address: true
spring:
application:
name: consumer2編碼
3:啓動類(App):
4:編寫接口(HelloService):
public Map<String,Object> h();
在接口上面添加註解@FeignClient(value = "XXX")
當前service和方法綁定。就是提供者配置文件中spring.
application.
name: 的值
在方法上面添加註解@GetMapping("XXX")
XXX是提供者的請求地址
5:編寫控制器(HelloController):
注入service,調用方法。
@Autowired
private HelloService service;
@RequestMapping("jj")
public Map<String,Object> hello(){
return service.h();
}url