Spring 简介

Spring 起源

EJB 是 Sun 公司( Java 语言发源地,后被 Oracle 公司收购,Java 语言目前归 Oracle 公司所有) 于 1988 年官方发布的 JavaEE 核心技术,主要用于企业级 Web 开发领域 ,是 JavaEE 平台的基石。

可惜的是 EJB 采用面向过程设计而不是主流的面向对象设计,导致 EJB 难以理解、维护、扩展和测试。开发者在使用 EJB 的过程中,也逐渐发现 EJB 极度复杂和繁琐。随着时间的推移,很多开发者对 EJB 逐渐不再抱有幻想,开始寻求更简便的方法。

这时 Sun 公司开始意识到 EJB 的诟病,于是在最新的 EJB3.0 规范中引入 AOP 和 DI 等新理念,而且简化了很多 EJB 的繁琐操作,但这一切对开发者而言来得太迟了。到 EJB 3.0规范发布时,其他基于 POJO(简单 Java 类) 的开发框架已经成为了事实上的标准。

2007 年时,Spring 1.0 发布,Spring 作为众多 Java 开源项目中的一员,以一己之力撼动了 Sun 公司的 Java EE 传统重量级框架(EJB),逐渐成为使用最多的 JavaEE 企业应用开发框架。

而 Spring 框架缔造者 Rod Johnson 是一位 Java 奇才,不仅在悉尼大学获得了计算机学士学位,同时还是一位音乐学的博士,也许是音乐的细胞赋予了他程序设计美学的灵感,让他成就了 Spring 的简约和优雅。

直到今天,Spring 从 1.x版本已经发展到了现在的 5.x 版本,经历了十几年时间仍然屹立不倒,而且还在蓬勃发展。

Spring 是什么

Spring 是分层的 JavaEE 应用一站式的轻量级开源框架,以控制反转(Inverse of Control,IoC)和面向切面编程(Aspect Oriented Programming,AOP)为内核,提供了表现层 Spring MVC、持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术。

这里的分层指的是三层架构模式,一站式指的是对三层架构都有支持,换句话说三层架构可以使用 Spring 一个框架就可以搞定了,都可以不用整合其他框架了。

  • Spring 整合了大量著名的第三方框架和类库(如 Struts、Hibernate、MyBaits、iBATIS、JPA、Web Service、FreeMaker 等),逐渐成为使用最多的 JavaEE 企业应用开源框架。

  • Spring 的一个最大的目的就是使 JavaEE 开发更加容易。同时,Spring 致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说 Spring 是一个提供了更完善开发环境的一个框架,可以为 POJO 对象提供企业级的服务。

Spring 认为 Java EE 的开发应该更容易、更简单,目标是实现一个易于开发、便于测试而又功能齐全的开发框架。目前来看,Spring 的这个目标实现了,Java 语言也很大程度上是因为 Spring 而被企业广泛使用,至今仍盘踞语言排行榜榜首位置。

Spring 的特点

那 Spring 到底有何过人之处,它的特点如下:

方便解耦,简化开发(核心)

通过 Spring 提供的 IoC 容器,可以将对象之间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度程序耦合

支持 AOP 编程(核心)

通过 Spring 提供的 AOP 功能,用户可以方便地进行面向切面编程,许多不容易用传统面向对象编程(OOP)实现的功能都可以通过 AOP 轻松应对

声明式事物管理(核心)

通过Spring的声明式事务灵活地进行事务管理,提高开发效率和质量

方便的程序测试

可以用非容器依赖的编程方式进行几乎所有的测试工作

方便集成各种优秀框架

Spring不排斥各种优秀框架,并提供对各种优秀框架(如 Struts、MyBatis、Hibernate 等)

降低 JavaEE API 使用难度

Spring为很多难用的 JavaEE API(如JDBC、JavaMail、远程调用等)提供了一个简单封装

Spring 源码是经典的学习范例

Spring 的源码设计合理、结构清晰,处处体现出对 Java 设计模式的灵活运用以及 Java 技术的深度挖掘

Spring 体系结构

Spring 框架由 1800 多个类组成,整个框架按其所属功能可以划分为 5 个主要模块

Spring 大家族

Spring 开源组织以 Spring 为中心逐渐推出更多应对企业级开发各种场景和需求的框架,慢慢形成了一个庞大的大家族,如下:

总结

Spring 框架和其他三层架构框架不同(如Struts 、Hibernate、SpringMVC等),它致力于简化 Java 开发,提供统一的、高效的方式构造整个应用。它有两大内核或者叫大杀器,分别是 Spring IoC 容器 和 Spring AoP 框架。

作者:Binge
本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/binbingg/p/13849229.html