Spring 是什么及Spring的缺点

546 阅读5分钟

1、 什么叫 Spring Boot?

什么叫 Spring Boot ?分开来看Spring Boot 是由 Spring 和 Boot 构成,Spring 即 Spring 框架,换句话而言,Spring Boot 是基于 Spring框架进行构建,Boot 就是 BootStrap(牵引),就是以 Spring作为基础的牵引程序。

下面引入一段 Spring Boot 官方的介绍:

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

优雅的SpringBoot框架。从这段话中我们可以得知:Spring Boot 就是一个快速创建单个的、生产级别的基于Spring 的应用。而且是尽量使用少的依赖和少的配置完成。

从本质上来说,Spring Boot就是Spring,它做了哪些没有它你也会去做的Spring Bean的配置。

获取Spring Boot 以及Spring Cloud视频课程请点:老裴带你玩转spring
Spring Boot和Spring Boot微服务实战课程介绍图:

2、Spring 是什么及其缺点

2.1 Spring 是什么?

(一)开源框架
Spring 是一个免费开源框架,为了简化系统设计。框架的主要优势之一就是其分层架构,分层架构允许任选其中某个组件。

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

  • 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  • Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
  • Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
  • Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
  • Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
  • Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
  • Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

(二)DI/IOC
在开发中,Spring框架从程序员手中接管了对象的创建,Spring根据配置文件或者扫描注解,得到类、组件之间的关系,并创建对象进行注入,这个过程不需要程序员手动创建并赋值,从而降低了耦合性,开发的时候也不需要理会这些与功能代码实现无关的部分,这就是DI/IOC(依赖注入/控制反转)。基于DI/IOC,Spring框架的不同模块提供了各种功能,为应用提供了AOP功能、持久层的支持,为Web层提供了SpringMVC以及与其他框架的整合使用等。

(三)框架集成
正因为 Spring 有 DI 和 IOC 的功能,创建和管理对象的任务都交给 Spring 管理,因此 Spring能 轻松集成其他框架。
比如:MyBatis、Hibernate 等。因为有人也叫 Spring 是"粘合剂"。这可以给开发者避免很多重复工作,提高开发效率。
点击获取Spring全家桶视频课程

2.2 Spring 缺点

Spring 能够给我们带来很多方便之处,但是同样也存在很多的问题:
(一)重量级框架
我们看到 Spring 架构图时会发现 Spring 里面包含有很多其他组件,比如数据访问、MVC、事务管理、面向切点、WebSocket 功能等,因此这么复杂的组件集中到一起就会提高初学者的学习成本。还有一方面随着你的服务越多,那么 Spring 的启动就会变得越慢。

(二)集成复杂
比如我们想要使用 MyBatis 或者 MongoDB的时候,我们要做很多工作不管使用配置方式也好还是使用注解方式。

(三)配置复杂
在使用 Spring 的时候,我们更多可能是选择 XML 进行配置,但目前这种配置方式已不在流行。

(四)构建和部署复杂
启动 Spring 的 IOC 容器,是完全要依赖于第三方的 web 服务器。自身不能启动的。
Spring Boot 结构图: