1 OpenFeign简介
OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。
项目结构
1在pom.xml中添加相关依赖
<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>
2在application.yml进行配置
主要是配置了端口和注册中心地址。
server:
port: 8085
spring:
application:
name: springcloud-openfeign
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8081/eureka/
3编写openfeign调用接口
package com.example.springcloudribbon.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient(name = "serviceA")
@Component
public interface MyInfo {
@RequestMapping(value = "/a", method = RequestMethod.GET)
String getUser();
}
4编写controller
package com.example.springcloudribbon.controller;
import com.example.springcloudribbon.service.MyInfo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class TestController {
@Resource
MyInfo myInfo;
@GetMapping("/test")
public String getTest() {
System.out.println("test-openfeign");
String result=myInfo.getUser();
System.out.println(result);
return result;
}
@GetMapping("/test1")
public String getTest1() {
return "test1";
}
}