购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 Spring Boot概述

本节将介绍Spring、Spring Boot、SSM等框架的概念及关系。

1.Spring与Spring Boot

Spring框架起源于早期的Java EE(最开始称为J2EE)技术,而Java EE当时相对复杂且不易用。Spring应运而生,旨在提供一种更简单、更灵活的方式来构建企业级Java应用程序。

早期的Java EE(尤其是EJB 2.x)是相当复杂的,需要大量的XML配置。对于简单的任务,Java EE可能会过度工程化,导致开发缓慢。同时JavaEE也存在容器依赖的问题,通常与应用服务器紧密耦合,这导致了迁移和测试难的问题。

Rod Johnson撰写了一本名为 Expert One-on-One J2EE Design and Development 的书,书中指出了Java EE和EJB组件框架中的一些主要缺陷。在这本书中他提出了一个基于普通Java类(POJO-plain old java objects,简单的java对象)和依赖注入的更简单的解决方案。这本书中的代码示例最终成为了Spring框架的核心。

自2004年Spring 1.0的发布以来,Spring框架已成为构建企业级Java应用程序的主流选择。其主要特点和模块如下。

轻量级与模块化设计:与Java EE的重量级应用服务器相比,Spring更为轻量级,不依赖复杂的容器。它采用模块化设计,使得开发者可以根据需要选择并使用不同的功能模块。

IoC容器与依赖注入:Spring引入了IoC(控制反转)容器和依赖注入特性,促进了松散耦合的应用程序架构,从而增强了代码的灵活性和可维护性。

Spring MVC:作为J2EE标准的替代方案,Spring提供了一个强大的MVC(模型-视图-控制器)框架,用于构建Web应用程序。

数据访问模块:Spring的数据访问模块简化了与数据库交互的复杂性,提供了对JDBC和对象关系映射(ORM)技术的支持,解决了常见的数据访问问题。

Spring Security:这个模块提供了应用程序安全性的全面支持,包括身份验证和授权。

Spring Cloud:为云计算和微服务架构提供了一系列工具和服务,支持构建分布式系统,并简化了与云服务的集成。

虽然Spring极大地简化了企业Java Web应用的开发,但随着时间的推移和Spring生态系统的扩展,配置和启动一个Spring项目变得相对复杂。特别是XML配置、依赖管理和各种与特定模块相关的设置使得初学者很难上手。随着敏捷开发和微服务架构的兴起,开发者需要更快、更简便的方法来开发、部署和扩展其应用程序。

为了简化基于Spring的应用程序的创建和开发过程,Spring Boot应运而生。它是Spring生态系统中的一个项目,提供了一系列工具和功能,使开发者能够更轻松地开发、测试和部署Spring应用。其主要特点如下。

(1)自动配置。传统的Spring应用往往需要大量的配置。Spring Boot遵循“约定优于配置”的原则,通过合理的默认设置、自动配置和简化的属性配置减少了这种需要。

(2)独立运行。Spring Boot应用可以作为独立的JAR文件运行,能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件,无须外部的Servlet容器。

(3)生产级应用监控。提供生产级的服务监控方案,如安全监控、应用监控、健康检测等。

(4)无代码生成。Spring Boot并不生成代码,也没有XML配置的需求。这使得代码更加简洁和易于管理。

2.Spring Boot与SSM

SSM是由三个独立的框架组合而成的,分别是Spring、Spring MVC和MyBatis的缩写。这三个框架经常结合使用,构建Java Web应用程序。

Spring:用于依赖注入和事务管理。

Spring MVC:用于Web层,处理HTTP请求。

MyBatis:是一个持久层框架,用于与数据库交互。

由于每个框架都有自己的配置和集成方式,通常需要XML或Java配置,手动整合三个框架,集成起来非常烦琐,因此需要使用大量的XML配置文件,Spring Boot可以很好地与Spring MVC和MyBatis结合使用,但其目的是简化整个应用程序的配置和部署。Spring Boot减少了大量的配置工作,提供自动配置,并且更偏向于使用Java配置而非XML。

3.Spring Boot与Spring Cloud

随着微服务架构的流行,往往会将Spring Boot与Spring Cloud集成,为微服务开发提供了一个强大的基础。

微服务是一种软件开发方法,它强调将单一应用程序拆分为一组小型、独立且互相交互的服务。每个服务都运行在自己的进程中,并与其他服务通过HTTP的轻量级机制(如RESTful API)进行通信。

微服务架构的主要特点和好处如下。

解耦:微服务将大型的、复杂的单体应用拆分为多个小型的、独立的服务,使其更容易管理和扩展。

独立部署与扩展:每个微服务可以独立部署,不必等待整个应用程序的部署。这大大提高了持续集成和持续部署(CI/CD)的效率。

故障隔离:一个服务的失败不会直接导致整个应用程序的失败,这有助于提高系统的整体可用性。

技术多样性:由于每个微服务都是独立的,因此可以为每个服务选择最合适的技术栈(编程语言、数据库等)。

细粒度的扩展:可以根据需要为特定服务分配更多资源,而不是为整个应用程序扩展资源。

尽管微服务带来了许多好处,但它也带来了一些挑战,如服务发现、负载均衡、配置管理、网络延迟、数据一致性等问题。为了应对这些挑战,许多新的工具和实践应运而生,如Docker、Kubernetes和Spring Cloud。

Spring Cloud是一个基于Spring的项目,为构建复杂的分布式系统提供了一整套工具。尤其是在微服务架构中,使用Spring Cloud开发者可以更容易地实现和管理微服务应用,而不必从零开始解决各种与分布式系统相关的问题。它提供了许多关键功能,如配置管理、服务发现、断路器、API路由等,因此Spring Cloud通常用于构建和管理大型的、分布式的、微服务架构的系统。其核心特点如下。

分布式/微服务方案:Spring Cloud为许多常见的模式提供了解决方案,如分布式配置管理、服务发现和负载均衡。

服务间通信:提供工具来帮助微服务之间进行通信,如使用HTTP、AMQP或其他协议。

容错特性:如断路器,帮助你的应用程序在微服务出现问题时保持稳定。

服务网关:如Spring Cloud Gateway,提供了API网关解决方案,用于处理微服务之间的路由、过滤和其他关注点。

虽然Spring Boot和Spring Cloud分别可以独立使用,但它们经常一起使用,特别是在构建微服务应用程序时。通常Spring Boot用于创建单个微服务,而Spring Cloud为这些微服务提供必要的协调和管理功能。 NWIDVLZcoiIh7hVshx8MjFtYNB3EY68IZMIw7bFFO/prHNLi1mZQxAiwyQoNs+GH

点击中间区域
呼出菜单
上一章
目录
下一章
×