




#探索Spring的
奇妙之旅程



Spring Cloud 和 Spring Boot 的区别







1. Spring Boot:简化单体应用的开发


Spring Boot 是一个基于 Spring 框架的开源工具,旨在简化 Java 应用程序的开发和部署。
它的核心理念是 “约定优于配置”,提供了很多开箱即用的功能,使得开发者可以不必关心底层复杂的配置,而专注于业务逻辑的实现。

核心特性:
自动配置:
内嵌服务器:
生产级特性:

适用场景:
Spring Boot 适用于单体应用的开发,尤其是在快速构建、部署和维护应用的场景中非常高效。它非常适合用于原型开发、小型服务的构建,或者作为微服务架构中的一个服务单元。

代码示例:
下面是一个简单的 Spring Boot 应用,演示如何创建一个基本的 RESTful API 服务:
package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}class HelloController {public String hello() {return "Hello, Spring Boot!";}}



2. Spring Cloud:微服务架构的解决方案


Spring Cloud 是一组开源工具,旨在为微服务架构提供基础设施支持。
它提供了许多解决分布式系统中常见问题的功能,如服务发现、负载均衡、分布式配置管理、消息中间件、API 网关等。

核心特性:
服务注册与发现:
客户端负载均衡:
断路器:
分布式配置管理:
API 网关:

适用场景:
Spring Cloud 主要用于支持和管理微服务架构。它帮助开发者解决在微服务环境下需要考虑的分布式问题,如服务注册与发现、配置管理、负载均衡、API 路由、断路器等。它适用于构建大规模、高可用、可扩展的分布式系统。

代码示例:
以下是一个 Spring Cloud 中使用 Eureka 实现服务注册与发现的示例。
Eureka 服务器配置:
package com.example.eurekaserver;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;// 启用 Eureka 服务注册功能public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}}
在 application.properties 文件中配置 Eureka 服务器的端口和相关参数:
spring.application.name=eureka-serverserver.port=8761eureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
Eureka 客户端配置:
package com.example.microservice;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;// 启用服务发现功能public class MicroserviceApplication {public static void main(String[] args) {SpringApplication.run(MicroserviceApplication.class, args);}}class ServiceController {public String greet() {return "Hello from Eureka Client!";}}
spring.application.name=microservice-clienteureka.client.service-url.defaultZone=http://localhost:8761/eureka/server.port=8081



3. Spring Cloud 的客户端负载均衡:Ribbon


Spring Cloud 提供了 Ribbon 作为客户端负载均衡的解决方案。Ribbon 通过 Eureka 或者其他服务注册中心提供的服务列表,动态选择一个服务实例进行访问,从而实现负载均衡。
以下是一个简单的使用 Ribbon 的示例,展示如何使用 RestTemplate 来进行负载均衡的服务调用。

配置 RestTemplate:
首先,在应用中配置一个负载均衡的 RestTemplate:
package com.example.microservice;import org.springframework.beans.factory.annotation.Autowired;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;@Configurationpublic class RibbonConfig {@Bean@LoadBalanced // 启用 Ribbon 负载均衡public RestTemplate restTemplate() {return new RestTemplate();}}

使用负载均衡的 RestTemplate 调用服务:
private RestTemplate restTemplate;public String callService() {// 使用 Ribbon 负载均衡访问其他微服务return restTemplate.getForObject("http://MICROSERVICE-CLIENT/greet", String.class);}
在这里,MICROSERVICE-CLIENT 是在 Eureka 注册中心中注册的服务名。Ribbon 会根据服务实例的健康状态自动选择一个实例进行调用。



总结


Spring Boot 是一个用于快速构建独立应用的框架,它通过自动配置和嵌入式服务器简化了开发和部署的过程。它适合用于构建单体应用或微服务架构中的单个服务,重点在于简化开发、测试和部署流程。
Spring Cloud 是用于构建和管理微服务架构的框架,提供了服务注册与发现、负载均衡、分布式配置、消息传递等一系列解决方案。它依赖于 Spring Boot,用于解决分布式系统中的核心问题,适用于大规模的微服务架构。


? 大家好,我是枫哥,一名Java后端开发者!我热衷于探索新技术,并在我的微信公众号上分享关于Java 生态和后端开发的知识。
欢迎关注我的公众号,期待与你一起探讨技术的无穷可能!” 目前专注于Java技术分享,覆盖春招、秋招、社招和跳槽相关内容,并提供一对一带徒学习服务。
加入 学徒计划,即可享受内推机会和优质资源,签订协议确保就业无忧。
此外,我们还推出了‘Java跳槽网’, 为你的求职之路提供全方位支持,助你快速找到理想工作



