SpringCloud由多个SpringBoot项目构成的,用来管理多个SpringBoot,是基于SpringBoot项目的。
一、项目结构
说明:将一体项目分为三个模块服务,每个服务都可以拥有自己的数据库。
1、spring-cloud-test:项目父工程,负责管理项目所需的依赖。
2、spring-cloud-api:实体类项目,专门管理项目实体类,项目包含pojo层。
3、spring-cloud-provider-8001:逻辑处理项目,专门处理项目逻辑,项目包含service、dao层。
4、spring-cloud-consumer-80:项目的控制层,调用 spring-cloud-provider-8001 模块。
二、创建项目父工程
1、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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 管理子项目模块 -->
<modules>
<module>spring-cloud-api</module>
<module>spring-cloud-provider-8001</module>
<module>spring-cloud-consumer-80</module>
</modules>
<groupId>com.zuo</groupId>
<artifactId>spring-cloud-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-test</name>
<description>Demo project for Spring Boot</description>
<!-- 父项目的打包方式一定为pom,表示这是一个管理总工程的pom文件 -->
<packaging>pom</packaging>
<!-- 管理所有依赖版本的地方 -->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring-boot-dependencies.version>2.1.4.RELEASE</spring-boot-dependencies.version>
<spring-cloud-dependencies.verssion>Greenwich.SR1</spring-cloud-dependencies.verssion>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
<mysql-connector-java.version>8.0.27</mysql-connector-java.version>
<druid.version>1.2.6</druid.version>
<mybatis-spring-boot-starter.version>2.1.4</mybatis-spring-boot-starter.version>
<logback-core.version>1.2.3</logback-core.version>
</properties>
<!-- 这里的意思是项目用到什么依赖就先放在这里,让父项目管理,当子项目用到项目的时候,
直接将所用依赖导入子项目的pom文件,不要依赖版本,因为子项目的依赖版本会继承这里的版本
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud-dependencies.verssion}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot-starter.version}</version>
</dependency>
<!--日志测试~-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback-core.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
三、创建实体类项目
1、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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 这里改为父项目工程的id -->
<parent>
<artifactId>spring-cloud-test</artifactId>
<groupId>com.zuo</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-api</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 这里引入的依赖是来自父项目<dependencyManagement>标签依赖管理中的依赖 -->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、创建实体类POJO(根据数据库里的表字段创建响应的实体类)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserPojo implements Serializable {
private Integer id;
private String name;
private String sex;
private Integer age;
}
四、创建逻辑处理项目模块
1、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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-cloud-test</artifactId>
<groupId>com.zuo</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-provider-8001</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-provider-8001</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.zuo</groupId>
<artifactId>spring-cloud-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、application.yml,因为这个项目是逻辑处理模块,所以需要配置与数据库相关的配置
server:
port: 8001
mybatis:
type-aliases-package: com.zuo.springcloudapi.pojo
mapper-locations: classpath:mapper/*.xml
config-location: classpath:mybatis-config.xml
spring:
application:
name: spring-cloud-provider
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/test?userUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
3、在resources文件夹下创建 mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
4、在resourcces文件夹下创建 mapper/UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zuo.springcloudprovider8001.dao.UserDao">
<select id="findUserAll" resultType="UserPojo">
select * from user
</select>
<select id="findUser" parameterType="Integer" resultType="UserPojo">
select * from user where id = #{id}
</select>
</mapper>
5、分别创建service、dao层
service层:
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<UserPojo> findUserAll(){
return userDao.findUserAll();
};
public UserPojo findUser(Integer id){
return userDao.findUser(id);
};
}
dao层:
@Mapper
public interface UserDao {
public List<UserPojo> findUserAll();
public UserPojo findUser(Integer id);
}
6、创建controller控制层,暴露给其它服务模块接口
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/spring-cloud-provide/findUserAll")
public List<UserPojo> findUserAll(){
return userService.findUserAll();
};
@RequestMapping("/spring-cloud-provide/findUser/{id}")
public UserPojo findUser(@PathVariable("id") Integer id){
return userService.findUser(id);
};
}
7、在浏览器访问下接口 localhost:8001/spring-cloud-provide/findUserAll 测试一下是否成功。
五、创建项目的控制层
1、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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-cloud-test</artifactId>
<groupId>com.zuo</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-consumer-80</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-consumer-80</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.zuo</groupId>
<artifactId>spring-cloud-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、application.yml
server:
port: 80
3、创建一个RestTemplate配置类来注入RestTemplate,RestTemplate类是用来对接和接收逻辑处理暴露的接口。
@Configuration
public class MyConfig {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
4、创建controller控制层
@RestController
public class UserConsummerController {
// 使用RestTemplate类来接收逻辑处理模块的数据
@Autowired
private RestTemplate restTemplate;
// 这个地址是逻辑处理模块的前缀地址
private static final String REST_URL_PROVIDER = "http://localhost:8001";
@RequestMapping("/spring-cloud-consumer/findUserAll")
public List<UserPojo> findUserAll(){
return restTemplate.getForObject(REST_URL_PROVIDER + "/spring-cloud-provide/findUserAll",List.class);
}
@RequestMapping("/spring-cloud-consumer/findUser/{id}")
public UserPojo findUser(@PathVariable("id") Integer id){
return restTemplate.getForObject(REST_URL_PROVIDER + "/spring-cloud-provide/findUser/" + id,UserPojo.class);
}
}
5、浏览器访问地址 http://localhost/spring-cloud-consumer/findUserAll,是否成功。(因为80端口可以省略)
六、使用Eureka组件
- Eureka-server(在原项目上创建eureka-server注册中心模块)
1、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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-cloud-test</artifactId>
<groupId>com.zuo</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-eureka-server</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- 我本来导入的依赖是从父项目依赖里找到的spring-cloud-netflix-eureka-server,
导入之后会报错,所以去maven官网找到下面这个依赖导入 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、在application.yml中配置(要保证编码格式都是utf-8)
server:
port: 8000
eureka:
instance:
#eureka 服务端得实例名称,
#这里有个坑,如果这个不是localhost,而是其它的,需要去电脑的c盘host文件设置映射
hostname: localhost
client:
# 表示是否向eureka注册中心注册自己
registerWithEureka: false
# 如果为false,则表示自己为注册中心
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
application:
# 对应注册中心页面的 Application
name: eurka-server
3、在启动类加上@EnableEurekaServer注解,表示这个项目模块是eureka-server注册中心
4、浏览器访问 http://localhost:8000,进入注册中心
- Eureka-client
1、创建一个新项目模块为eureka-client
(1)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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-cloud-test</artifactId>
<groupId>com.zuo</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-eureka-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-eureka-client</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
(2)application.yml
server:
port: 8002
eureka:
instance:
hostname: localhost
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8000/eureka/
spring:
application:
name: spring-cloud-eureka-client
(3)在启动类上加@EnableEurekaClient注解
(4)启动此项目,在浏览器刷新http://localhost:8000,查看注册中心是否将此服务注册成功
2、改造之前的项目(在原来的逻辑处理项目模块上改造)
(1)在原来的pom.xml文件里加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)在原来的application.yml里添加
eureka:
instance:
hostname: localhost
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8000/eureka/
(3)在启动类上添加@EnableEurekaClient注解
(4)启动此项目之后,刷新浏览器查看此服务模块是否注册到注册中心
七、使用Ribbon负载均衡组件
(在原来的项目的控制层改造,加负载均衡)
1、在原来的pom.xml文件里增加下面两个依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、在原来的application.yml文件增加
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
service-url:
defaultZone: http://localhost:8000/eureka/
3、因为我们是用RestTemplate来传递数据,所以我们将它改造成负载均衡来使用,在方法上增加@LoadBalanced注解,如下:
@Configuration
public class MyConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
4、在controller控制层,之前我们的 REST_URL_PROVIDER 地址是本地地址,现在我们要从注册中心取这个地址,更改这个地址,如下:
@RestController
public class UserConsummerController {
@Autowired
private RestTemplate restTemplate;
// 这是原来的地址
// private static final String REST_URL_PROVIDER = "http://localhost:8000";
// 这是现在的地址,下面这个是去注册中心找的,对应注册中心页面中的 Application
private static final String REST_URL_PROVIDER = "http://SPRING-CLOUD-PROVIDER";
@RequestMapping("/spring-cloud-consumer/findUserAll")
public List<UserPojo> findUserAll(){
return restTemplate.getForObject(REST_URL_PROVIDER + "/spring-cloud-provide/findUserAll",List.class);
}
@RequestMapping("/spring-cloud-consumer/findUser/{id}")
public UserPojo findUser(@PathVariable("id") Integer id){
return restTemplate.getForObject(REST_URL_PROVIDER + "/spring-cloud-provide/findUser/" + id,UserPojo.class);
}
}
5、在启动类上增加@EnableEurekaClient注解
6、通过浏览器访问 http://localhost/spring-cloud-consumer/findUserAll 测试。
7、可以自己多创建几个此项目模块,体会下负载均衡。
八、Feign组件
1、说明:原来我们使用的是RestTemplate模板,利用RestTemplate对http请求的封装处理。
我们现在也可以使用Feign组件来对http请求进行处理,而且我们在使用RestTemplate模板的时候,还需要集成Ribbon负载均衡组件,而Feign组件已经帮我们集成好了Ribbon负载均衡。
2、重新创建一个新的控制层项目,也可以在原来的控制层项目上修改,在原来的控制层项目的pom.xml文件增加一个新的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
3、新建一个接口
@FeignClient(value = "SPRING-CLOUD-PROVIDER") // 这个对应要调用哪个服务接口的名字,对应注册中心 Application
public interface UserServiceFeign {
// 这个对应要调用的服务的controller接口地址
@RequestMapping("/spring-cloud-provide/findUserAll")
public List<UserPojo> findUserAll();
@RequestMapping("/spring-cloud-provide/findUser/{id}")
public UserPojo findUser(@PathVariable("id") Integer id);
}
4、在控制层项目修改
@RestController
public class UserConsummerController {
// 原来这里是RestTemplate,现在使用Feign
@Autowired
private UserServiceFeign userServiceFeign;
@RequestMapping("/spring-cloud-consumer/findUserAll")
public List<UserPojo> findUserAll(){
return userServiceFeign.findUserAll();
}
@RequestMapping("/spring-cloud-consumer/findUser/{id}")
public UserPojo findUser(@PathVariable("id") Integer id){
return userServiceFeign.findUser(id);
}
}
5、在启动类添加@EnableFeignClients(basePackages = "com.zuo.springcloudfeign81.service"),扫描@FeignClient,浏览器访问 http://localhost:81/spring-cloud-consumer/findUserAll 进行测试。
九、Hystrix组件
1、Hystrix组件熔断器功能(应用于服务端,在服务端增加该功能)
RestTemplate模板的:
(1)在逻辑处理模块的pom.xml文件增加一个依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
(2)在控制层的方法上增加@HystrixCommand,如下:
@RestController
public class UserController {
@Autowired
private UserService userService;
// fallbackMethod 指明服务发生熔断时调用的那个备份方法名
@HystrixCommand(fallbackMethod = "findUserAllError")
@RequestMapping("/spring-cloud-provide/findUserAll")
public List<UserPojo> findUserAll(){
return userService.findUserAll();
};
@HystrixCommand(fallbackMethod = "findUserError")
@RequestMapping("/spring-cloud-provide/findUser/{id}")
public UserPojo findUser(@PathVariable("id") Integer id){
return userService.findUser(id);
};
// 备份方法,特别注意,这个方法类型要和上面的方法名一一对应
public List<UserPojo> findUserAllError(){
return null;
}
public UserPojo findUserError(){
return new UserPojo();
}
}
(3)在启动类上加@EnableHystrix,也可以加@EnableCircuitBreaker,它们两个作用一样,查看@EnableHystrix的源码可以发现,它继承了@EnableCircuitBreaker,并对它进行了在封装。区别是:@EnableCircuitBreaker // 开启熔断器 ,@EnableHystrix //开启 Hystrix。
(4)浏览器访问 http://localhost/spring-cloud-consumer/findUserAll 进行测试。
Feign组件的:
(1)在feign项目的application.yml中开启hystrix熔断器功能,本来hystrix熔断器功能是在服务端,而这个是客户端的,因为Feign组件集成了hystrix熔断器功能,所以我们直接在这个项目中运用:
feign:
hystrix:
enabled: true #开启hystrix熔断器功能
(2)在feign接口的@FeignClient注解增加一个属性:
@FeignClient(value = "SPRING-CLOUD-PROVIDER",fallback = UserControllerError.class)
public interface UserServiceFeign {
@RequestMapping("/spring-cloud-provide/findUserAll")
public List<UserPojo> findUserAll();
@RequestMapping("/spring-cloud-provide/findUser/{id}")
public UserPojo findUser(@PathVariable("id") Integer id);
}
(3)新建一个熔断器处理类,实现上面这个接口,并把这个类注入到bean中:
@Service
public class UserControllerError implements UserServiceFeign{
@Override
public List<UserPojo> findUserAll() {
return null;
}
@Override
public UserPojo findUser(Integer id) {
return null;
}
}
(4)访问浏览器进行测试。