为了账号安全,请及时绑定邮箱和手机立即绑定

SpringCloud教程:新手入门与实践指南

标签:
Spring Cloud

本文详细介绍了SpringCloud教程,涵盖SpringCloud的核心概念、优势和应用场景。通过示例代码展示了如何搭建开发环境和创建简单的SpringCloud应用案例。此外,文章还深入解析了SpringCloud的核心组件,包括服务注册与发现、负载均衡和声明式服务调用。springcloud教程中包含了从入门到实战的全方位指导。

SpringCloud教程:新手入门与实践指南 SpringCloud简介

SpringCloud是什么

Spring Cloud 是一组基于 Spring Boot 的框架,用于快速构建分布式系统。它提供了一系列工具和解决方案,帮助开发者更轻松地构建、集成和管理分布式系统中的各种组件和服务。Spring Cloud 的设计目标是简化微服务架构的开发流程,使得开发者能够专注于业务逻辑而不是底层技术细节。

SpringCloud的核心概念

Spring Cloud 依赖于多个核心概念来实现其功能,其中包括:

  1. 服务注册与发现:通过 Eureka 或 Consul 等服务注册中心来注册和发现服务。
  2. 负载均衡:使用 Ribbon 或 Zuul 来实现客户端和服务端的请求分发和负载均衡。
  3. 服务网关:通过 Zuul 或 Spring Cloud Gateway 来实现请求的路由和过滤。
  4. 配置管理:使用 Config Server 或 Spring Cloud Config 来集中管理和动态更新配置文件。
  5. 断路器:使用 Hystrix 来实现服务之间的容错处理。
  6. 服务追踪:通过 Sleuth 和 Zipkin 来实现分布式系统的追踪和监控。
  7. 消息总线:提供一个分布式消息总线,用于在服务之间传递消息。

示例代码:服务注册与发现

// 以下代码片段展示了如何使用 Eureka 注册一个服务

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ServiceAApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceAApplication.class, args);
    }
}

SpringCloud的优势和应用场景

Spring Cloud 的优势包括:

  • 简化开发流程:通过提供现成的解决方案和工具,极大地简化了微服务架构的开发流程。
  • 高度可配置性:其高度可配置的特性使得开发者可以根据实际需求对各个组件进行灵活配置。
  • 丰富的功能支持:除了上述核心功能外,Spring Cloud 还提供了诸如数据访问、缓存、安全等丰富的功能支持。

应用场景包括:

  • 微服务架构:适用于需要构建微服务架构的应用,实现系统的模块化和可伸缩性。
  • 云原生应用:适用于需要利用云基础设施优势的应用,提高应用的弹性和可伸缩性。
  • 企业级应用:适用于需要高可用性、可伸缩性以及高效管理的应用环境。
快速入门SpringCloud

SpringCloud的环境搭建

要开始使用 Spring Cloud,首先需要搭建开发环境。这里以搭建一个简单的 Spring Boot 环境为例。

搭建步骤

  1. 安装 JDK 和 Maven:确保你的开发环境中已经安装了 JDK 和 Maven。
  2. 创建 Spring Boot 项目:可以使用 Spring Initializr 或者 IDEA 等工具创建 Spring Boot 项目。
  3. 添加依赖:在项目的 pom.xml 文件中添加 Spring Cloud 的相关依赖。
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR9</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <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>
</dependencies>
  1. 启动 Eureka 服务:创建一个 Eureka 服务注册中心,用于注册和发现服务。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
  1. 启动服务:创建一个服务,使用 Eureka 注册中心进行注册。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ServiceBApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceBApplication.class, args);
    }
}

第一个SpringCloud应用案例

本节将通过创建一个简单的购物车服务来展示如何使用 Spring Cloud 进行服务注册和发现。购物车服务将依赖于一个商品服务来获取商品信息。

服务架构

  • 商品服务:提供商品信息的查询接口。
  • 购物车服务:提供添加和删除商品到购物车的接口。

商品服务

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ProductApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProductApplication.class, args);
    }
}

购物车服务

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ShoppingCartApplication {
    public static void main(String[] args) {
        SpringApplication.run(ShoppingCartApplication.class, args);
    }
}
SpringCloud核心组件详解

Eureka服务注册与发现

Eureka 是 Spring Cloud 中的服务注册与发现的实现。它能够将服务实例注册到注册中心,同时提供服务的发现和负载均衡功能。

配置 Eureka 服务

spring:
  application:
    name: eureka-service
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    hostname: localhost

示例代码:服务注册与发现

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ServiceCApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceCApplication.class, args);
    }
}

Ribbon负载均衡

Ribbon 是一个基于客户端的负载均衡工具,它可以通过配置文件来指定多个服务地址,并使用轮询、随机、最少连接数等策略来实现服务的负载均衡。

配置 Ribbon

spring:
  application:
    name: service-a
ribbon:
  eureka:
    enabled: true

示例代码:Ribbon负载均衡

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

Feign声明式服务调用

Feign 是一个声明式的 Web 服务客户端,它使得编写 Web 服务调用更加简单。Feign 支持多种注解和配置,可以方便地与 Spring Cloud 集成,实现服务间的声明式调用。

配置 Feign

spring:
  application:
    name: service-b
feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000

示例代码:Feign声明式服务调用

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "service-a")
public interface ServiceAClient {
    @GetMapping("/greeting")
    String greeting(@RequestParam(value = "name") String name);
}

服务的监控与调用链路追踪

在分布式系统中,服务的监控和调用链路追踪是非常重要的。Spring Cloud 提供了 Sleuth 和 Zipkin 来帮助实现这些功能。

配置 Sleuth 和 Zipkin

spring:
  sleuth:
    sampler:
      probability: 1.0
  application:
    name: service-a
zipkin:
  base-url: http://localhost:9411

示例代码:服务追踪

import brave.sampler.Sampler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SleuthConfig {
    @Bean
    public Sampler defaultSampler() {
        return Sampler.ALWAYS_SAMPLE;
    }
}

服务的配置与管理

在微服务架构中,服务的配置和管理是非常重要的环节。Spring Cloud 提供了 Spring Cloud Config 和 Spring Cloud Bus 等工具来帮助实现服务的集中配置和动态更新。

配置中心

spring:
  application:
    name: config-server
server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/username/config-repo
          cloneOnStart: true
          username: your-github-username
          password: your-github-token

动态更新配置


import org.springframework.cloud.bus.jackson.BusMessageJackson2Deserializer;
import org.springframework.cloud.bus.jackson.BusMessageJackson2Serializer;
import org.springframework.cloud.bus.jackson.BusPropertiesJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jackson.BusPropertyJackson2Module;
import org.springframework.cloud.bus.jac
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消