Spring框架参考文档(3.2.4)

                              第一部分Spring框架概述

Spring框架是一个轻量级的解决方案以及潜在的一站式企业级应用。但是Spring又是模块化的,各个模块又是相互解耦的。可以在Struts的基础上使用IOC容器,也可以同时使用集成的Hibernate和jdbc。Spring框架支持声明式事务,还可以通过RMI或者Web服务远程访问逻辑层,以及各种类型的持久化数据的方式。它提供了功能强大的MVC框架,将AOP非侵入的植入到应用程序中。Spring被设计成非侵入式的,逻辑代码与Spring框架本身没有关系。在集成层(比如数据访问层)会依赖于第三方数据访问技术或者Spring架包。然而Spring比较容易将依赖包和代码库解耦。

这份文档是描述Spring功能的一个参考文档。关于本文档,如果你有任何意见请及时的通过邮件或者论坛的方式联系我们。

1. Spring框架的介绍

Spring框架是一个全面支持java应用开发的平台,开发者只需关注自己的应用,从而减轻开发者的负担。

Spring可以通过普通的POJO对象来构建应用程序,从而实现非侵入式的企业级应用服务。非侵入式可以应用于J2SE以及J2EE。

下面列举几个作为应用程序员怎样才能充分利用Spring平台的优点:

. java方法在数据库事务中执行时,最好不要涉及到事务API

   . 本地java方法进行远程调用,最好不要调用远程API

   .本地java方法进行管理操作,最好不要调用JMXAPI

   . 本地java方法进行消息处理,最好不要调用JMSAPI

 1.1依赖注入和控制反转

背景

   “什么才是控制反转?”,2004年,马丁.福勒在他的个人网站上关于IOC提出了这个问题。福勒建议将控制反转改为依赖注入,这样更加简洁明了。关于IOC和DI可以参考他的博文 http://martinfowler.com/articles/injection.html

    Java应用程序,无论是小的applets还是多层的企业级程序,都是松散耦合的代名词,通常由相互关联的对象形成符合要求的应用程序。所以在应用程序中对象是彼此依赖的。

  虽然JAVA平台为应用程序的开发提供了丰富的功能,但是任然缺乏一键构造整体模块的方式,往往将需要开发者或者架构师自己来构建。诚然,开发者可以通过设计模式(例如工厂、抽象工厂、装饰器等)构造不同的类或者实例来实现应用程序。然而这些模式是比较简单的:最好的做法是定义模式的名称包括这个模式能做什么的描述,可以应用的范围以及可能存在的问题等等。设计模式是通用的,开发者必须要在应用程序中自己实现。

  Spring的IOC为解决模块化问题,提供了一个比较规范的解决方案,可以使用不同的组件构建一个完整的应用程序。Spring定义的IOC可以在应用程序中得到综合的应用。许多项目团队使用Spring框架来构建健壮的可维护的应用程序。

   1.2模块

  Spring框架总共包括20个模块,模块主要包括:核心容器、数据访问和集成、AOP(面向切面编程)、测试等。

   Spring框架的模块示意图

.核心容器

核心容器包括javabeans、核心、上下文,表达式语言模块。

    Bean和核心模块是Spring框架的基础模块,包括IOC和DI功能。BeanFactory比较精致的实现了工厂设计模式,它可以根据实际的应用逻辑代码区去耦的配置。  

上下文模块是建立在核心和bean模块的基础之上的:这就意味着,基于框架式的对象访问,就有点类似于JNDI注册表。上下文模块继承了bean模块所有的功能,并且还扩展支持国际化(例如资源包的使用)、事件传播、资源加载、以及可以通过Servlet容器透明的创建上下文。上下文模块还支持J2EE特性,比如EJB、JMX和远程登录。ApplicationContext接口是上下文模块中使用最多的。

    EL模块提供了强大的表达式查询语言和运行中的操作对象图。它是在JSP2.1规范中统一定义的表达式语言。EL表达式支持设置和获取属性值、属性赋值、方法调用、通过数组访问上下文、集合和索引、逻辑和算术运算符、命名变量、以及通过IOC容器检索Bean的名称。它还支持链表投影和选择,以及常见的链表汇总。

.数据访问和集成

数据访问/集成层包括JDBC,ORM,OXM,JMS和事务模块。JDBC模块提供了JDBC的抽象层,用来消除繁琐的JDBC代码以及用于解析数据库厂商的特有的校验代码。

   ORM模块对比较流行的ORM框架提供了集成,包括JPA、JDO、Hibernate、IBatis。结合所有Spring其他的功能特性,利用ORM封装包,你可以使用所有这些O/ R映射框架,如前面提到的简单声明式事务管理功能。

   OXM模块提供抽象层支持对象到XML的映射以实现JAXB、Castor、XMLBeans、JiBX和XStream

   Java消息传递服务(JMS)模块能够生成生产和消费消息。

事务模块支持对所有的POJO以及实现接口的类的程序化和声明是事务管理。

.网络

网络层主要包含Web、Web-ServletWeb-StrutsWeb-Portlet(Web组件)。

Spring的Web模块具有Web方向的集成特性,比如文件上传、Servlet监听器初始化IOC容器以及Web方向的上下文环境。Spring同样也包含于Web相关的部分:远程处理。

Web-Servlet主要包含Spring针对于Web应用的SpringMVC。SpringMVC实现了模型与表单的完全解耦,并且集成了Spring所有其他的功能。

Web-Struts主要包含一些对比较经典Struts的web层支持的集成类,但是从Spring3.0开始已经被弃用。主要考虑可以迁移应用到Struts2.0以及Spring的集成或者SpringMVC。

Web-Portlet模块主要包含:组件环境对MVC的支持以及对Web-Servlet的支持。

.面向切面编程

   Spring的AOP模块允许自定义面向切面编程,比如将方法拦截与切入点完全解耦的分离。

Spring英文参考文档翻译相关推荐

  1. Spring Boot 参考文档翻译part3

    3.使用Spring Boot 本节将详细介绍如何使用Spring Boot.它涵盖了构建系统.自动配置以及如何运行应用程序等主题.我们还将介绍一些Spring Boot最佳实践.尽管Spring B ...

  2. Spring Security 参考手册(一)

    Spring Security 参考手册 Ben AlexLuke TaylorRob WinchGunnar Hillert Spring security 是一个强大的和高度可定制的身份验证和访问 ...

  3. 怎么将不可编辑的英文PDF文档翻译成中文

    怎么将不可编辑的英文PDF文档翻译成中文 首先下载一个网易有道词典,打开设置界面,设置打开mini窗口的快捷键为ALT+W,设置截屏翻译的快捷键为ALT+E. 然后打开一篇PDF 文档,按住ALT+E ...

  4. Spring Boot参考指南

    Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...

  5. 计算机网络 自顶而下方法 原书第七版 英文参考答案(网盘)

    找了半天没有免费可用的,现在找到了上传贴在这里 计算机网络 自顶而下方法 原书第七版 英文参考答案(网盘) 链接 提取码:t5ua

  6. 参与 Spring 4 中文文档翻译

    参与 Spring 4 中文文档翻译 我们从2014年12月开始翻译Spring 4的框架文档,虽然至今已有一年,但是进度很慢.其中一部分原因是因为Spring 文档有1000多页,而且翻译的时候根据 ...

  7. spring AMQP 中文文档翻译

    标题spring AMQP 中文文档翻译 spring AMQP 实现: spring rabbit 官方中文文档翻译 最初是由于 找不到 ConfirmType中SIMPLE和 CORRELATED ...

  8. Spring参考文档翻译11--IOC容器09

    1.9. Annotation-based Container Configuration 基于注解的容器配置 Are annotations better than XML for configur ...

  9. Spring参考文档翻译12--IOC容器10

    1.10. Classpath Scanning and Managed Components 类路径扫描和托管组件 Most examples in this chapter use XML to ...

最新文章

  1. java抓取网页标题内容_[Java教程]java 网页页面抓取标题和正文
  2. cad表示计算机辅助,CAD计算机辅助设计之快捷键篇~( ̄▽ ̄)
  3. vue Watcher分类 computed watch
  4. MSCRM2011 Current User has Role 【判定当前用户角色方法】
  5. 【语义分割】OCRNet:Object-Context Representations for Semantic Segmentation
  6. php中请写出定义变量的两种方法,php定义变量几种
  7. Linux 主机信息 总览
  8. mysql系统变量配置文件_MySQL系统变量配置基础
  9. Java中Object转换为List类型
  10. 企业管理的实质和核心是人的管理
  11. 【MySQL】mysql中any,in,some,all的区别
  12. PHP中MySQLi的配置PHP使用mysqli连接mysql的方法
  13. 清华大学镜像站miniconda下载地址
  14. Enovia Overview
  15. 关于对游戏帧率的学习
  16. android 短信数据库在哪个文件夹,安卓手机的短信备份后存到了哪个文件夹下
  17. Java解决下载--文件名乱码
  18. MacBook下使用VirtualBox虚拟Win7时设置分辨率为2560*1440
  19. H5页面的测试点整理
  20. python足球分析系统_NAO足球/高尔夫比赛视觉系统设计(python初级版)

热门文章

  1. 我是一台服务器,那个家伙像余罪
  2. 密码学的革新,Findora的技术值得期待
  3. 【Spring源码学习】Spring Bean的销毁
  4. 微信号 可以改了 !!! 真事 !!
  5. linux下 文件排序,如何在Linux中对文件进行排序 (GUI和Shell)
  6. 2021-08-19 win10 家庭中文版 安装组策略
  7. 有好多的非处女们确实让大家反感,知道为什么吗?其实你们应该检讨下自己!
  8. Linux内核学习--电源管理
  9. python IDE wing3.2 版本注册
  10. Python爬虫篇:实现铃声采集