这是第二次看关于Spring的资料,由于刚開始学习Spring的时候是边看视频边学习的,所以更注重的是实现代码,可是对宏观的掌握还是不够,这次主要从宏观的角度来分析一下Spring。

什么是Spring

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

Spring的优点

首先,既然要学习和使用Spring,那么,我们就必需要知道使用Spring的优点,假设不能了解他的优点,就不能在适当的时候使用这个框架,当然也就失去了学习的意义。

方便结构,简化开发

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

AOP编码的支持

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

声明式事物的支持

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

方便程序的測试

能够用非容器以来的编程方式进行差点儿全部的測试工作,在Spring里,測试不再是昂贵的操作,而是随手可做的事情。

方便集成各种优秀框架

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

减少Java EE API的使用难度

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

Java源代码是经典学习范例

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

Spring的体系结构

假设说Spring是一个人,那么AOP和IoC就是他的灵魂(AOP和IoC在之前博客已经讲到),而他的结构体系就是他的骨骼,所以,这里我们要具体的研究一下Spring的结构体系

一张图胜过千言万语

以下依次讲讲结构体系中每个模块的内容

核心容器:

核心容器组成的核心,Beans,上下文和表达式语言模块,每一块的主要功能为:

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

Context 模块构建于核心模块之上,扩展了
BeanFactory 的功能,添加了
i18n 国际化、 Bean生命周期控制、框架事件体系、资源加载透明化等多项功能。此外,该模块还提供了许多企业级服务的支持,如邮件服务、任务调度、
JNDI 定位、 EJB
集成、远程訪门等。

ApplicationContext是 Context
模块的核心接口。

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

数据訪问/集成:

数据訪问/集成层包含JDBC,ORM,OXM,JMS和事务处理模块,每个模板的功能例如以下

JDBC模块提供了不再须要冗长的JDBC编码相关了JDBC的抽象层。

ORM模块提供的集成层。流行的对象关系映射API,包含JPA,JDO,Hibernate和iBatis。

OXM模块提供了一个支持对象/
XML映射实现对JAXB,Castor,使用XMLBeans,JiBX和XStream
的抽象层。

Java消息服务JMS模块包括的功能为生产和消费的信息。

事务模块支持编程和声明式事务管理实现特殊接口类,并为全部的POJO。

不论什么应用程序,其核心的问题是对数据的訪问和操作。数据有非常多表现形式,如数据表、XML、消息等,而每种数据形式又拥有不同的数据訪问技术(如数据表的訪问既能够直接通过JDBC,也能够通过Hirnate或iBatis)。

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

Web:

在Web层包含网络,Web-Servlet,Web-Struts和网络的Portlet组件,其细节例如以下:

Web模块提供了主要的Web开发的集成特性,比如多方文件上传功能和使用的servlet监听器的IoC容器初始化和针对Web的应用程序上下文。

Web-Servlet模块包括Spring的模型-视图-控制器(MVC)实现Web应用程序。

Web-Struts模块包括支持类内的Spring应用程序集成了经典的StrutsWeb层。yiibai.com

Web-Portlet模块提供了MVC实如今portlet环境中使用和镜子Web的Servlet的模块的功能。yiibai.com

该模块建立在ApplicationContext模块块之上,提供了Web应用的各种工具类,如通过Listener或Servlet初始化Spring容器,将Sprmg容器注冊到Web容器中。其次,该模块还提供了多项面向web的功能,如透明化文件上传、Velocity、FreeMarker、XSLT的支持。

此外,Spring能够整合Struts、WebWork、TapestryWeb等MVC框架。

其它:

还有像AOP,切面,规范,网络和測试模块,其具体情况例如以下其它一些重要的模块:

AOP模块提供了面向方面编程实现,同意您定义方法拦截器和切入点,以干净解耦,实现的功能,应该分开的代码。

Aspects模块提供与AspectJ的集成这又是一个功能强大且成熟的面向方面编程(AOP)框架。

Instrumentation模块提供了一定的应用server中使用类工具的支持和类载入器实现。

測试模块支持Spring组件使用JUnitTestNG框架的測试。

此外,Spring在远程訪问以及WebService上提供了对非常多著名框架的整合。因为Spring框架的扩展性,特别是随着spring框架影响性的扩大,越来越多框架主动地支持Spring框架,让spring框架应用涵盖面越来越宽广。

本博客主要借鉴了《Spring3.X企业开发应用实战》,一本很系统的解说Spring的书籍,推荐大家看一下

Spring核心技术的更多相关文章

  1. Spring核心技术(八)——Spring自动装载的注解

    本文针对自动装载的一些注解进行描述. 基于注解的容器配置 @Required注解 @Required注解需要应用到Bean的属性的setter方法上面,如下面的例子: public class Sim ...

  2. Spring核心技术(六)——Spring中Bean的生命周期

    前文已经描述了Bean的作用域,本文将描述Bean的一些生命周期作用,配置还有Bean的继承. 定制Bean 生命周期回调 开发者通过实现Spring的InitializeingBean和Dispos ...

  3. Spring核心技术(五)——Spring中Bean的作用域

    前文概述了Spring的容器,Bean,以及依赖的一些信息,本文将描述一下Bean的作用域 Bean的作用域 当开发者定义Bean的时候,同时也会定义了该如何创建Bean实例.这些具体创建的过程是很重 ...

  4. Spring核心技术(四)——Spring的依赖及其注入(续二)

    前面两篇文章描述了IoC容器中依赖的概念,包括依赖注入以及注入细节配置.本文将继续描述玩全部的依赖信息. 使用 depends-on 如果一个Bean是另一个Bean的依赖的话,通常来说这个Bean也 ...

  5. Spring 核心技术(3)

    接上篇:Spring 核心技术(2) version 5.1.8.RELEASE 1.4 依赖 典型的企业应用程序不会只包含单个对象(或 Spring 术语中的 bean).即使是最简单的应用程序也是 ...

  6. Spring 核心技术(2)

    接上篇:Spring 核心技术(1) version 5.1.8.RELEASE 1.3 Bean概述 Spring IoC 容器管理一个或多个bean,他们都是根据提供的配置元数据(例如 XML 中 ...

  7. Spring 核心技术(4)

    接上篇:Spring 核心技术(3) version 5.1.8.RELEASE 1.4.2 依赖关系及配置详情 如上一节所述,你可以将 bean 属性和构造函数参数定义为对其他托管 bean(协作者 ...

  8. Spring 核心技术(5)

    接上篇:Spring 核心技术(4) version 5.1.8.RELEASE 1.4.5 自动装配协作者 Spring 容器可以自动连接协作 bean 之间的关系.你可以让 Spring 通过检查 ...

  9. Spring 核心技术(6)

    接上篇:Spring 核心技术(5) version 5.1.8.RELEASE 1.5 Bean 作用域 创建 bean 定义时,你创建了一种用于创建 bean 定义中定义的类实例的方法.bean定 ...

  10. Spring 核心技术(7)

    接上篇:Spring 核心技术(6) version 5.1.8.RELEASE 1.6 定制 Bean 的特性 Spring Framework 提供了许多可用于自定义 bean 特性的接口.本节将 ...

随机推荐

  1. Python 绝对简明手册

    Python 绝对简明手册 help(函数名)来获取相关信息 另外,自带的文档和google也是不可少的 2. 基本语法2.1. if / elif / else x=int(raw_input(&q ...

  2. 让你的 Qt 桌面程序看上去更加 native(一共六篇)

    <让你的 Qt 桌面程序看上去更加 native>是一个系列文章.在这个系列中,你将会了解到如何让你的 Qt 桌面应用程序看上去更加 native.这里,我假设你已经清楚如何使用 Qt 编 ...

  3. windows phone 8的新特性

    <1>硬件的升级WP8在硬件上有了极大的提升,处理器支持双核或多核 理论最大支持64核,分辨率支持800x480.1280x720/768,屏幕支持720p或WXGA:支持存储卡扩展.同时 ...

  4. poj 1155 TELE (树形背包dp)

    本文出自   http://blog.csdn.net/shuangde800 题目链接: poj-1155 题意 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构, ...

  5. Thawte SSL123 SSL证书-中国证书.com

    Thawte SSL123 SSL证书是域名验证型证书.也是Thawte最廉价的一款证书.该证书签发方便,仅仅须要验证域名全部权就可以签发,无需提交认证文件,通常签发时间仅仅须要1-2个小时.SSL1 ...

  6. linux c setitimer使用方法说明

    在linux c编程中.setitimer是一个比較经常使用的函数.可用来实现延时和定时的功能,网上有各种零零散散的使用方法说明,都仅仅提到了个别使用方法,今天抽出时间实践整理了一份比較具体的: 使用 ...

  7. OCP-1Z0-051-题目解析-第8题

    8. View the Exhibit and examine the structure of the CUSTOMERS table. Which two tasks would require ...

  8. Oracle数据库top10物理段

    select owner, name, type, mega, tbs   from (select owner,                case                  when ...

  9. [Oracle]TRIGGER

    题外话: Oracle 的使用. 以前客户方用的是SQL SERVER,一直在用SQL SERVER,感觉SQL SERVER的用户体验非常好. 不管是开发环境的界面布局到SQL 的写法上,感觉写起来 ...

  10. inner join、left join、right join中where和and的作用

    inner join.left join.right join中where和and的作用 .内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括  (1)左外连接 (左边的 ...