说明
- 项目运行的前提条件:服务注册中心已经启动。
- 本项目的服务注册与发现是基于 Spring Cloud Consul 实现。具体内容博主写在另一篇博客:
- 本博客是 Spring Cloud 微服务化(精简完整版)的一部分。
简介
- 首先,这是一个标准的 Spring Boot 项目
- 其次,它实现基于
Spring Cloud Consul
的服务注册功能 - 最后,它支持
Spring Cloud Feign
远程调用- 如果Feign 客户端远程调用异常,则返回 fallback 信息(通过
Spring Cloud Netflix Hystrix
实现)
- 如果Feign 客户端远程调用异常,则返回 fallback 信息(通过
- 当前实现的功能:
- 提供一个接口,接收 uri 为
/api/user/{id}
的 HTTP GET 请求 - 这个接口通过 Feign 客户端远程调用
awesome-user-server
服务中匹配/api/user/{id}
的接口
- 提供一个接口,接收 uri 为
创建项目
- 博主使用的开发工具是 Intellij IDEA,创建的项目结构如下所示:
- 主要包含六部分内容(其他部分请参考 Spring Cloud Gateway 网关)
- 依赖信息:pom.xml
- 配置信息:application.yml
- 启动类: AwesomeUserApiApplication.java
- 控制器类:UserController.java
- 接口类:UserService.java
- 接口对应的服务熔断类:UserServiceFallback.java
依赖
- 主要引入依赖:
- spring-cloud-starter-consul-all:注册服务到 Consul
- spring-cloud-starter-gateway :支持网关服务。(用于实现网关功能直接转发某些请求,和当前博客主要介绍的内容关系不大,但由于本博客属于 Spring Cloud 微服务化(精简完整版)的一部分,由于整体设计的原因,所以这里引入这个依赖)
- spring-cloud-starter-netflix-hystrix :支持熔断服务
- spring-cloud-starter-openfeign:支持 Feign 客户端远程调用
- 完整 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"> <modelVersion>4.0.0</modelVersion> <groupId>andy.wanna.sing</groupId> <artifactId>awesome-user-api</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>awesome-user-api</name> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <java.version>1.8</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</