Spring Cloud 开发实战(一):搭建 Spring Cloud 框架

在微服务架构日益普及的今天,Spring Cloud 作为一个为开发者提供构建分布式系统所需工具的框架,受到越来越多开发者的青睐。Spring Cloud 提供了一系列的项目和组件,帮助我们解决分布式系统中常见的问题,如配置管理、服务发现、负载均衡、熔断器等。本文将通过一个简单的示例,展示如何搭建一个基本的 Spring Cloud 框架。

环境准备

首先,你需要确保你的开发环境中已经安装了以下软件:

  1. JDK 8 或更高版本
  2. Maven
  3. IDE(如 IntelliJ IDEA 或 Eclipse)

创建 Spring Boot 项目

我们将使用 Spring Initializr 生成两个 Spring Boot 项目,一个是服务提供者(Provider),一个是服务消费者(Consumer)。访问 Spring Initializr 进行项目创建。

服务提供者(Provider)
  1. 选择 Maven 项目,语言为 Java。
  2. 添加依赖项:Spring Web、Spring Cloud Dependencies(版本选择:2022.x.x)。
  3. 点击“Generate”生成项目,解压并导入到 IDE 中。

pom.xml 中添加如下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
服务消费者(Consumer)
  1. 同样创建一个 Maven 项目,添加依赖项:Spring Web、Spring Cloud Dependencies。
  2. pom.xml 中添加如下依赖:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

服务注册与发现

在服务提供者的主类上添加 @EnableEurekaServer 注解,开启 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);
    }
}

接着,在 application.yml 中配置 Eureka 服务器的属性:

server:
  port: 8761

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

然后,在服务消费者中配置 Eureka 客户端,添加 @EnableEurekaClient 注解:

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

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

application.yml 中配置 Eureka 客户端的属性:

spring:
  application:
    name: consumer
eureka:
  client:
    service-url:
      default-zone: http://localhost:8761/eureka/

创建 REST Controller

在服务提供者中,创建一个 REST Controller,暴露一个简单的接口:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProviderController {

    @GetMapping("/serve")
    public String serve() {
        return "Hello from Provider!";
    }
}

在服务消费者中,你可以调用服务提供者的接口。创建一个 REST Controller,如下所示:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/consume")
    public String consume() {
        return restTemplate.getForObject("http://provider/serve", String.class);
    }
}

在消费者的 application.yml 中添加 RestTemplate 的 Bean 定义:

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

@Configuration
public class AppConfig {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

启动应用

最后,启动 Eureka 服务器、服务提供者和服务消费者。在浏览器中访问 http://localhost:8761 可以看到你的服务已经成功注册。

当调用消费者的 /consume 接口时,应该能成功访问到 Provider 中暴露的服务。

小结

通过以上步骤,我们搭建了一个简单的 Spring Cloud 框架。本文示例展示了如何进行服务注册与发现,在微服务架构中,Spring Cloud 无疑提供了极大的便利。在后续的文章中,我们将深入探讨 Spring Cloud 的其他组件,如配置中心、负载均衡等,敬请期待!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部