文章目录
写在前面
- spring cloud 项目搭建 :1、eureka 服务治理: https://blog.youkuaiyun.com/a__int__/article/details/116791386
- spring cloud 项目搭建 :2、ribbon客户端负载均衡: https://blog.youkuaiyun.com/a__int__/article/details/116797413
- spring cloud 项目搭建 :4、Hystrix服务熔断: https://blog.youkuaiyun.com/a__int__/article/details/117442286
1、Feign介绍
ribbon和feign区别:
- ribbon通过微服务名字在客户端调用
- feign同过接口和注解在微服务端调用(实际上是在ribbon的基础上封装的,更简单)
2、使用Feign
2.1、往springcloud-api中添加service
在springcloud-api添加feign的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
新建接口DeptClientService.java
import com.demo.bean.Dept;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Component
@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT")
public interface DeptClientService {
@GetMapping("/dept/get/{id}")
public Dept get(@PathVariable("id") Long id);
@GetMapping("/dept/get")
public List<Dept> getList();
@RequestMapping("/dept/add")
public Boolean add(Dept dept);
}

2.2、新建服务消费者模块springcloud-consumer-dept-feign
新建包org.example.controller
新建类DeptConsumerController
import com.demo.bean.Dept;
import com.demo.service.DeptClientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class DeptConsumerController {
@Autowired
private DeptClientService service = null ;
@RequestMapping("consumer/dept/get/{id}")
public Dept get(@PathVariable("id") Long id){
return this.service.get(id);
}
@RequestMapping("consumer/dept/add")
public Boolean add(Dept dept){
return this.service.add(dept);
}
@RequestMapping("consumer/dept/get")
public List<Dept> getList(){
return this.service.getList();
}
}
新建启动类ConsumerApplication_Feign
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = {"com.demo"})
public class ConsumerApplication_Feign {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication_Feign.class,args);
}
}
新建配置文件application.yml
server.port: 80
# eureka配置
eureka:
client:
register-with-eureka: false # 服务消费者,不需要往注册中心注册
service-url:
defaultZone: http://127.0.0.1:7001/eureka/,http://127.0.0.2:7002/eureka/,http://127.0.0.3:7003/eureka/
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>clouddemo</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-consumer-dept-feign</artifactId>
<dependencies>
<!-- 导入我们自己的模块 -->
<dependency>
<groupId>org.example</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!--erueka的依赖也需要-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
</dependencies>
</project>
2.3、启动、测试
分别启动下面这几个模块

访问http://127.0.0.1/consumer/dept/get

本文围绕Spring Cloud中Feign展开,先介绍了Feign,对比了其与Ribbon的区别,指出Feign是在Ribbon基础上封装,通过接口和注解在微服务端调用,更简单。接着详细说明了使用Feign的步骤,包括往springcloud - api中添加service、新建服务消费者模块及启动测试等内容。
3771

被折叠的 条评论
为什么被折叠?



