Spring学习之Spring概述(一)

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

  • 特点

    1.方便解耦,简化开发

    通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

    2.AOP编程的支持

    通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。

    3.声明式事务的支持

    在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

    4.方便程序的测试

    可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。

    5.方便集成各种优秀框架

    Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。

    6.降低Java EE API的使用难度

    Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

    7.Java 源码是经典学习范例

    Spring的源码设计精妙、结构清晰、匠心独运,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果。

  • spring体系结构

    spring核心框架由4000多个类组成,整个框架按其所属功能可划分为5个主要模块:

    Spring学习之Spring概述(一)_第1张图片

    1. lOC

    Spring核心模块实现了IoC的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由IOC容器负责依赖类之间的创建、拼接、管理、获取等工作。BeanFactory接口是spring框架的核心接口,它实现了容器许多核心的功能。

    表达式语言糢块是统一表达式语言(Unified EL)的一个扩展,该表达式语言用于 查询和管理运行期的对象,支持设置/获取对象属性,调用对象方法,操作数组,集合等, 此外,该模块还提供了逻辑表达式运算、变量定义等功能,可以方便地通过表达式串和 Spring lOC容器进行交互。

    2.AOP

    AOP是继OOP之后,对编程设计思想影响极大的技术乙一。AOP是进行横切逻辑 编程的思想,它开拓了考虑问题的思路。在AOP模块里,Spring提供了满足AOP Alliance 规范的实现。还整合了AspectJ这种AOP语言级的框架。在Spring里实现AOP编程有众 多选择。Java 5.0引入jaVa.lang.instrument,允许在JVM启动时启用一个代理类,通过该 代理类在运行期修改类的字节码,改变一个类的功能,从而实现AOP的功能.

    3.数据访问和集成

    任何应用程序的核心问题是对数据的访问和操作。数据有多种表现形式,如数据表、 XML、消息司等,而每种数据形式又拥有不同的数据访问技术(如数据表的访问既可以直 接通过JDBC,也可以通过Hibernate或Mybatis。

    首先,Spring站在DAO的抽象层面,建立了 一套面向DAO层的统一的异常体系,同时将各种訪问数据的检查型异常转换为非检查型异常,为整合各种持久层框架提供基 础。其次.Spring’通过模板化技术对各种数据访坷技术进行了薄层封装,将模式化的代码隐藏起来,使数据访问的程序得到大幅度简化。这样,Spring就建立起了和数据形式及访问技术无关的统一的DAO层,借助AOP技术,Spring提供了声明式事务的功能。

    4. Web及远程操作

    该模块建立在Application Context模块之上,提供了WEB应用的各种工具类,如通 过Listener或Servlet初始化Spring容器,将Spring容器注册到Web容器中。该模块还提供了多项面向Web的功能,如透明化文件上传、Velocity、FreeMarker、XSLT的支持。 此外,Spring可以整合Struts、WebWork等MVC框架。

    5.Web及远程访问

    Spring自己提供了一个完整的类似于Struts的MVC框架,称为Spring MVC。据说 Spring之所以也提供了一个MVC框架,是因为RodJOhnSOn想证明实现MVC其实是一 项简单的工作。当然,如果你不希望使用SpringMVC,那么Spring对Struts、WebWork等MVC框架的整合,一定也可以给你带来方便。相对于Servlet的MVC,Spring在简 化Portlet的开发上也做了很多工作,开发者可以从中受益。

    6. WebSocket

    WebSocket 提供了一个在Web应用中高效、双向的通信,需要考虑到客户端(浏览器)和服务器之间的高频和低时延消息交换。一般的应用场景有在线交易、游戏、协作、 数据可视化等。

    此外,Spring在远程访问及Web Service上提供了对很多著名框架的整合。由于Spring框架的扩展性,特别是随着Spring框架影响性的扩大,越来越多的框架主动支持 Spring框架,使得Spring框架应用的涵盖面越来越宽广。

你可能感兴趣的:(Spring)