共计 2304 个字符,预计需要花费 6 分钟才能阅读完成。
2.1 Spring 简介
Spring 是一个开源框架,它由 Rod Johnson 创立。它是为了解决企业应用开发的复杂性而创立的。
从简略性、可测试性和松耦合的角度而言,任何 Java 利用都能够从 Spring 中受害。
Spring 是一个轻量级的管制反转 (IoC) 和面向切面 (AOP) 的容器框架。
Spring 最后的呈现是为了解决 EJB 臃肿的设计,以及难以测试等问题。
Spring 为简化开发而生,让程序员只需关注外围业务的实现,尽可能的不再关注非业务逻辑代码(事务管制,平安日志等)。
2.2 Spring8 大模块
留神:Spring5 版本之后是 8 个模块。在 Spring5 中新增了 WebFlux 模块。
- Spring Core 模块
这是 Spring 框架最根底的局部,它提供了依赖注入(DependencyInjection)特色来实现容器对 Bean 的治理。外围容器的次要组件是 BeanFactory,BeanFactory 是工厂模式的一个实现,是任何 Spring 利用的外围。它应用 IoC 将利用配置和依赖从理论的利用代码中分离出来。
- Spring Context 模块
如果说外围模块中的 BeanFactory 使 Spring 成为容器的话,那么上下文模块就是 Spring 成为框架的起因。
这个模块扩大了 BeanFactory,减少了对国际化(I18N)音讯、事件流传、验证的反对。另外提供了许多企业服务,例如电子邮件、JNDI 拜访、EJB 集成、近程以及时序调度(scheduling)服务。也包含了对模版框架例如 Velocity 和 FreeMarker 集成的反对
- Spring AOP 模块
Spring 在它的 AOP 模块中提供了对面向切面编程的丰盛反对,Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过应用 Spring AOP,不必依赖组件,就能够将申明性事务管理集成到应用程序中,能够自定义拦截器、切点、日志等操作。
- Spring DAO 模块
提供了一个 JDBC 的形象层和异样层次结构,打消了繁缛的 JDBC 编码和数据库厂商特有的错误代码解析,用于简化 JDBC。
- Spring ORM 模块
Spring 提供了 ORM 模块。Spring 并不试图实现它本人的 ORM 解决方案,而是为几种风行的 ORM 框架提供了集成计划,包含 Hibernate、JDO 和 iBATIS SQL 映射,这些都听从 Spring 的通用事务和 DAO 异样层次结构。
- Spring Web MVC 模块
Spring 为构建 Web 利用提供了一个性能全面的 MVC 框架。尽管 Spring 能够很容易地与其它 MVC 框架集成,例如 Struts,但 Spring 的 MVC 框架应用 IoC 对管制逻辑和业务对象提供了齐全的拆散。
- Spring WebFlux 模块
Spring Framework 中蕴含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器构建的。反应式堆栈 Web 框架 Spring WebFlux 是在 5.0 版的前期增加的。它是齐全非阻塞的,反对反应式流 (Reactive Stream) 背压,并在 Netty,Undertow 和 Servlet 3.1+ 容器等服务器上运行。
- Spring Web 模块
Web 上下文模块建设在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文,提供了 Spring 和其它 Web 框架的集成,比方 Struts、WebWork。还提供了一些面向服务反对,例如:实现文件上传的 multipart 申请。
2.3 Spring 特点
轻量
- 从大小与开销两方面而言 Spring 都是轻量的。残缺的 Spring 框架能够在一个大小只有 1MB 多的 JAR 文件里公布。并且 Spring 所需的解决开销也是微不足道的。
- Spring 是非侵入式的:Spring 利用中的对象不依赖于 Spring 的特定类。
管制反转
- Spring 通过一种称作管制反转(IoC)的技术促成了松耦合。当利用了 IoC,一个对象依赖的其它对象会通过被动的形式传递进来,而不是这个对象本人创立或者查找依赖对象。你能够认为 IoC 与 JNDI 相同——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象申请就被动将依赖传递给它。
面向切面
- Spring 提供了面向切面编程的丰盛反对,容许通过拆散利用的业务逻辑与零碎级服务(例如审计(auditing)和事务(transaction)治理)进行内聚性的开发。利用对象只实现它们应该做的——实现业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的零碎级关注点,例如日志或事务反对。
容器
- Spring 蕴含并治理利用对象的配置和生命周期,在这个意义上它是一种容器,你能够配置你的每个 bean 如何被创立——基于一个可配置原型(prototype),你的 bean 能够创立一个独自的实例或者每次须要时都生成一个新的实例——以及它们是如何互相关联的。然而,Spring 不应该被混同于传统的重量级的 EJB 容器,它们常常是宏大与轻便的,难以使用。
框架
- Spring 能够将简略的组件配置、组合成为简单的利用。在 Spring 中,利用对象被申明式地组合,典型地是在一个 XML 文件里。Spring 也提供了很多根底性能(事务管理、长久化框架集成等等),将应用逻辑的开发留给了你。
所有 Spring 的这些特色使你可能编写更洁净、更可治理、并且更易于测试的代码。它们也为 Spring 中的各种模块提供了根底反对。
2.4 能源节点老杜 spring6 教程软件版本
- IDEA 工具:2022.1.4
- JDK:Java17(Spring6 要求 JDK 最低版本是 Java17)
- Maven:3.8.6
- Spring:6.0.0-M2
- JUnit:4.13.2