2.1 Spring简介

Spring是一个开源框架,它由Rod Johnson创立。它是为了解决企业应用开发的复杂性而创立的。
从简略性、可测试性和松耦合的角度而言,任何Java利用都能够从Spring中受害。
Spring是一个轻量级的管制反转(IoC)和面向切面(AOP)的容器框架。
Spring最后的呈现是为了解决EJB臃肿的设计,以及难以测试等问题。
Spring为简化开发而生,让程序员只需关注外围业务的实现,尽可能的不再关注非业务逻辑代码(事务管制,平安日志等)。

2.2 Spring8大模块

留神:Spring5版本之后是8个模块。在Spring5中新增了WebFlux模块。

  1. Spring Core模块

这是Spring框架最根底的局部,它提供了依赖注入(DependencyInjection)特色来实现容器对Bean的治理。外围容器的次要组件是 BeanFactory,BeanFactory是工厂模式的一个实现,是任何Spring利用的外围。它应用IoC将利用配置和依赖从理论的利用代码中分离出来。

  1. Spring Context模块

如果说外围模块中的BeanFactory使Spring成为容器的话,那么上下文模块就是Spring成为框架的起因。
这个模块扩大了BeanFactory,减少了对国际化(I18N)音讯、事件流传、验证的反对。另外提供了许多企业服务,例如电子邮件、JNDI拜访、EJB集成、近程以及时序调度(scheduling)服务。也包含了对模版框架例如Velocity和FreeMarker集成的反对

  1. Spring AOP模块

Spring在它的AOP模块中提供了对面向切面编程的丰盛反对,Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过应用 Spring AOP,不必依赖组件,就能够将申明性事务管理集成到应用程序中,能够自定义拦截器、切点、日志等操作。

  1. Spring DAO模块

提供了一个JDBC的形象层和异样层次结构,打消了繁缛的JDBC编码和数据库厂商特有的错误代码解析,用于简化JDBC。

  1. Spring ORM模块

Spring提供了ORM模块。Spring并不试图实现它本人的ORM解决方案,而是为几种风行的ORM框架提供了集成计划,包含Hibernate、JDO和iBATIS SQL映射,这些都听从 Spring 的通用事务和 DAO 异样层次结构。

  1. Spring Web MVC模块

Spring为构建Web利用提供了一个性能全面的MVC框架。尽管Spring能够很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架应用IoC对管制逻辑和业务对象提供了齐全的拆散。

  1. Spring WebFlux模块

Spring Framework 中蕴含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器构建的。反应式堆栈 Web 框架 Spring WebFlux 是在 5.0 版的前期增加的。它是齐全非阻塞的,反对反应式流(Reactive Stream)背压,并在Netty,Undertow和Servlet 3.1+容器等服务器上运行。

  1. Spring Web模块

Web 上下文模块建设在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文,提供了Spring和其它Web框架的集成,比方Struts、WebWork。还提供了一些面向服务反对,例如:实现文件上传的multipart申请。

2.3 Spring特点

  1. 轻量

    1. 从大小与开销两方面而言Spring都是轻量的。残缺的Spring框架能够在一个大小只有1MB多的JAR文件里公布。并且Spring所需的解决开销也是微不足道的。
    2. Spring是非侵入式的:Spring利用中的对象不依赖于Spring的特定类。
  2. 管制反转

    1. Spring通过一种称作管制反转(IoC)的技术促成了松耦合。当利用了IoC,一个对象依赖的其它对象会通过被动的形式传递进来,而不是这个对象本人创立或者查找依赖对象。你能够认为IoC与JNDI相同——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象申请就被动将依赖传递给它。
  3. 面向切面

    1. Spring提供了面向切面编程的丰盛反对,容许通过拆散利用的业务逻辑与零碎级服务(例如审计(auditing)和事务(transaction)治理)进行内聚性的开发。利用对象只实现它们应该做的——实现业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的零碎级关注点,例如日志或事务反对。
  4. 容器

    1. Spring蕴含并治理利用对象的配置和生命周期,在这个意义上它是一种容器,你能够配置你的每个bean如何被创立——基于一个可配置原型(prototype),你的bean能够创立一个独自的实例或者每次须要时都生成一个新的实例——以及它们是如何互相关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们常常是宏大与轻便的,难以使用。
  5. 框架

    1. 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