(1) spring 简介

概述

  • Spring 框架是一个开源的 Java平台,它为容易而快速的开发出耐用的 Java 应用程序提供了全面的基础设施。

  • Spring 框架最初是由 Rod Johnson 编写的,并且 2003 年 6 月首次在 Apache 2.0 许可下发布。

  • Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。

  • Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。


Spring是分层的 Java Se/ee应用一站式的轻量级开源框架,
以IoC( Inverse of Control,控制反转)和AOP( Aspect Oriented Programming,切面编程)为内核,提供了展现层 Spring mvc、持久层 Spring JDBC及业务层事务管理等一站式的企业级应用技术。此外, Spring以海纳百川的胸怀整合了开源世界里众多著名的第三方框架和类库,逐渐成为使用最多的轻量级 Java EE企业应用开源框架。

 

Spring能带给我们什么

也许有很多开发者曾经被EJB的过度宣传所迷惑,成为EJB的拥趸者,并因此拥有一段痛苦的开发经历。EJB的复杂源于它对所有的企业应用采用统一的标准,它认为所有的企业应用都需要分布式对象、远程事务,因此造就了EJB框架的极度复杂。这种复杂不仅造成了陡峭的学习曲线,而且给开发、测试、部署工作造成了很多额外的要求和工作量。其中最大的诟病就是难于测试,因为这种测试不能脱离EJB容器,每次测试都需要进行应用部署并启动EJB容器,而部署和启动EJB容器是一项费时费力的重型操作,其结果是测试工作往往成为开发工作的瓶颈。

 

但是EJB并非是一无是处,它为Spring提供了很多可圈可点的服务,如声明事务、透明持久化等Spring承认EJB中存在优秀的东西,只是它的实现太复杂、要求过严过高,所以 Spring在努力提供类似服务的同时尽量简化开发, Spring认为 Java ee的开发应该更容易、更简单。

  • spring给我们带来如下好处:
  • 方便解耦,简化开发。通过 Spring提供的IoC容器,用户可以将对象之间的依赖关系交由 Spring进行控制,避免硬编码所造成的过度程序耦合。有了 Spring,用户不必再为单实例模式类、属性文件解析等这些底层的需求编写代码,可以更专注于上层的应用。
  • AOP编程的支持。通过 Spring提供的AOP功能,方便进行面向切面的编程,很多不容易用传统OOP实现的功能可以通过AOP轻松应对。
  • 声明式事务的支持。在 Spring中,用户可以从单调烦闷的事务管理代码中解脱出来,通过声明的方式灵活地进行事务管理,提高开发效率和质量。
  • 方便程序的测试。可以用非容器依赖的编程方式进行几乎所有的测试工作。在Spring里,测试不再是昂贵的操作,而是随手可做的事情。
  • 方便集成各种优秀框架。 Spring不排斥各种优秀的开源框架,相反, Spring可以降低各种框架的使用难度。 Spring提供了对各种优秀框架(如Sus、 Hibernate、 Hessian、 Quartz等)的直接支持。
  • 降低 Java EE API的使用难度。 Spring对很多难用的 Java EE Apl(如JDBC javaMail、远程调用等)提供了一个薄层封装,通过 Spring的简易封装,这些Java EE APi的使用难度大大降低。
  • Java源码是经典的学习范例。Spring的源码设计精妙、结构清晰、匠心独运,处处体现着大师对Java设计模式的灵活运用及对Java技术的高深造诣。 Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究 Spring源码将会收到意想不到的效果。
  • 依赖注入(DI)

Spring 最认同的技术是控制反转的依赖注入(DI)模式。控制反转(IoC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。
当编写一个复杂的Java应用程序时,应用程序类应该尽可能的独立于其他的 Java 类来增加这些类可重用可能性,当进行单元测试时,可以使它们独立于其他类进行测试。依赖注入(或者有时被称为配线)有助于将这些类粘合在一起,并且在同一时间让它们保持独立。

到底什么是依赖注入?让我们将这两个词分开来看一看。这里将依赖关系部分转化为两个类之间的关联。例如,类 A 依赖于类 B。现在,让我们看一看第二部分,注入。所有这一切都意味着类 B 将通过 IoC 被注入到类 A 中。

依赖注入可以以向构造函数传递参数的方式发生,或者通过使用 setter 方法 post-construction。由于依赖注入是 Spring 框架的核心部分,所以我将在单独的文章中利用很好的例子去解释这一概念。

  • 面向方面的程序设计(AOP)

Spring 框架的一个关键组件是面向方面的程序设计(AOP)框架。一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样常见的很好的关于方面的例子,比如日志记录、声明性事务、安全性,和缓存等等。

在 OOP 中模块化的关键单元是类,而在 AOP 中模块化的关键单元是方面。AOP 帮助你将横切关注点从它们所影响的对象中分离出来,然而依赖注入帮助你将你的应用程序对象从彼此中分离出来。

Spring 框架的 AOP 模块提供了面向方面的程序设计实现,可以定义诸如方法拦截器和切入点等,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.Net属性的方式合并行为信息到代码中。我将在一个单独的文章中讨论更多关于 Spring AOP 的概念。

如何获取spring

在开始学习和使用 Spring之前,必须先获取 Spring的发布包。 Spring在以下4个地方提供发布版本的下载

  • Spring下载社区:spring.io自建的下载社区(htp:/ spring. io/projects),不但提供Spring框架的下载,还提供 Spring所有子项目的下载口 Maven中心:即 Maven工具默认访问的仓库,许多 Spring依赖的第三方类库也可以从这里获取。

 

  • 企业模块仓库( Enterprise Bundle Repository,EBR):是由 Spring Source公司自己维护的一个企业模块仓库,类似于 Maven的仓库。它拥有 Spring所涉及的所有类库。不但可以被 Maven使用,也可以被 Gradle使用(基于 Groovy DSL自动化构建工具, Spring框架源码采用 Gradle来构建)。

 

  • Maven公共仓库;众多 Maven仓库都可获取到,如htts:/ repository. sonate org等,目前, Spring不再提供直接下载方式,只能使用 Maven或 Gradle构建来下载 Spring的构建包。在项目开发中,可通过配置 Maven工程中的 pom.xml文件来下载
<dependencies>
        <dependency>
            <groupId>org. springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.2.RELEASE</version>
        </dependency>
</dependencies>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容