[翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续
英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.html#overview-modules
2.Spring框架介绍
Spring 框架是一个提供复杂的基础配置的java平台用于开发java应用。Spring处理基础的配置以便你可以专注于自己的应用开发。
Spring 让你可以使用POJOs(Plain Old Java Object 纯的java对象)构建应用以及使用非入侵方式来将企业服务应用与POJOs。这个能力呗用于Java SE 编程模块以及完全或者部分的Java EE编程。
以下是你作为一个应用开发者如何从Spring 平台获得便利的例子:
创建一个java方法执行数据库事物而不需要考虑事物的API。
创建一个本地的java方法成为远程方法而不需要处理远程APIs.
创建一个本地的java方法成为管理操作,而不需要处理JMX (Java Management Extensions )的APIs.
创建一个本地的java方法进行消息处理而不需要处理JMS(Java Message Service ) APIs.
2.1 依赖注入以及控制反转
java应用--一个宽泛的单词可以从受限的嵌入式应用到n层,服务器端的企业应用-通常由多个对象一起共同的组成。所以常常一个应用中的对象都互相之间有依赖。
尽管java平台提供了丰富的应用程序开发功能,它缺少组织基础的构建块成为一个合作的整体的方法,它将这个任务留给了架构师和开发者。尽管你可以使用设计模式比如:工厂,抽象工厂模式,构造者模式,装饰者,和服务定位(Factory, Abstract Factory, Builder, Decorator, and Service Locator )来组建很多的类以及对象实例组成一个应用,这些模式仅仅只是:最佳的实践,这个模式功能描述,在哪里去应用它,它解决的问题,以及等等。模式只是形式化的最佳实践你必须自己在你的应用中进行实践。
Spring 框架的控制反转组件通过提供一个将不同的组件组合到一个完全工作的应用中以备使用的形式化方法来解决这个问题。Spring框架把形式化设计模式编码为一等对象以便你可以集成到你自己的应用中。很多的组织和机构在这种方法中使用Spring框架来创建鲁棒性,可维护的应用。
背景:
“这个问题是,哪一方面的控制被反转了?”Martin Fowler 提出了这个关于控制反转的问题(IoC)在他的网站上(/*http://martinfowler.com/intro.html*/)2004年。
Fowler 支持修改这个原则的名字让他更加自解释,并且提出了依赖注入。
2.2 模块
Spring框架由大概20个模块来组成。这些模块被分组为:核心容器, 数据访问/集成,网络,AOP(面向方向的编程),仪器,消息以及测试( Core Container, Data Access/Integration, Web, AOP (Aspect Oriented Programming), Instrumentation, Messaging, and Test) 如下图所示:

下面的章节列出了每一个模块的工件特性和覆盖的主题。工件名称和工件ID在依赖管理工具(2.3.1章节)中相关联。
2.2.1 核心容器
核心容器由:spring-core, spring-beans, spring-context, spring-context-support和 spring-expression(Spring Expression Language) 模块组成。
spring-core, spring-beans模块提供了这个框架的基础部分,包括IoC和依赖注入特性。BeanFactory是工程模式的精确实现。它消除了对程序化单例的需求并且允许你将配置和特殊的依赖从你的程序逻辑进行解耦。
Context(spring-context)模块构建在Core和Bean实例的基础上:它是一个在框架样式内获取对象的方法和JNDI注册类似。Context模块继承自Beans 模块并且添加国际化的支持(比如 资源绑定),事件传播,资源加载,上下文的透明创建比如一个Servlet容器。这个上下文模块同样支持Jave EE特性比如:EJB,JMX以及基础远程。ApplicationContext 接口是这个上下文模块的重点。Spring-context-support 提供了集成第三方包到Spring上下文应用的支持用于缓存(EhCache, Guava, JCache),邮件(JavaMail),调度(CommonJ, Quartz)和模板引擎(FreeMarker, JasperReports, Velocity).
Spring-expression 模块提供强有力的表达式语言用来在运行时查询以及组装一个对象图。它是在JSP 2.1 规格中指定的统一表达语言(unified EL) 的扩展。这个语言支持设定和获取属性值,属性比较,方法注入,访问数组,集合索引器的内容,逻辑和算数操作符,命名变量,以及通过命名在Spring IOC中来检索对象。它同样支持列表投影以及作为一个普通的列表聚合来选取。
2.2.2 AOP 以及 仪器
Spring-aop 模块提供一个AOP 兼容联盟 面向切面编程的实现允许你定义比如方法截击和切入点来清晰的解耦代码来实现那些需要分离的功能。使用代码级的原功能,你可以将行为信息合并到你的代码中,就像.Net的属性一样.
这个单独的Spring-aspects模块提供AspectJ的集成。
spring-instrument 模块提供类实现支持和类加载实现用于特定的应用服务器。
spring-instrument-tomcat 模块包含Spring对Tomcat的代理。
2.2.3 消息传送
Spring 框架4 包含一个spring-messaging 模块以及从Spring 集成项目中抽象出来的关键词,比如:消息,消息通道,消息处理器(Message, MessageChannel, MessageHandler)以及其他作为一个消息的应用程序的基础。这个模块同样包括一系列注入用于映射消息到方法中,就像Spring MVC中注入的基础编程模型。
2.2.4 数据访问/集成
数据访问/集成 层包含了JDBC, ORM, OXM, JMS和事物模块。
Spring-jdbc 模块提供一个JDBC-抽象层将单调的JDBC编程以及解析数据库容器的特定错误代码去掉。
Spring-tx 模块对那些实现了特定接口的类以及所有的POJOs支持编程和声明式的事物管理。
Spring-oxm 模块对流行的对象关系映射APIs包括JPA,JDO以及Hibernate提供整合层。使用spring-oxm模块你可以使用全部的O/R-映射 框架来和其他Spring提供的特性组合在一起比如前面提到的简单的声明式事物管理特性。
spring-jms 模块(Java Message Service )包含产生和消费消息的特性。自从4,1开始,它提供一个包含spring-messaging整合的模块。
2.2.5 web
Web层包括spring-web, spring-webmvc, spring-websocket, 和 spring-webmvc-portlet 模块。
spring-web 模块提供基础的面向网络的集成,比如多文件上传的功能,使用Servlet 监听器以及面向网络的应用上下文的Ioc容器的初始化。它同样包含一个Http客户端,以及网络相关的Spring远程支持。
spring-webmvc 模块(同样被知道为Web-Servlet 模块)包括Spring 的MVC以及网络应用上REST 网络服务实现。Spring MVC框架提供了域模型和web表单之间清晰的独立并且和Spring框架其他特性进行集合。
spring-webmvc-portlet 模块(别名 Web-Portlet 模块) 在Portlet环境中提供MVC实现并且镜像spring-webmvc 模块功能。
2.2.6 测试
spring-test 模块支持Spring组件中Juit或者TestNG进行单元测试和集成测试。它提供载入Spring的ApplicationContexts 以及这些上下文的缓存。它也提供模拟对象帮助你单独测试代码。
2.3 使用场景
之前描述的构建模块使Spring成为很多场景的选择,从在有限资源的嵌入式应用到完善的使用了Spring事物管理和web框架集成的企业应用。

Spring 的声明事物管理特性使web应用具有完全的事务性,就像使用EJB容器管理事物。你所有的业务逻辑可以通过简单的POJOs实现并且被Spring IoC容器管理。其他的服务包括支持发送邮件
[翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续的更多相关文章
- 译:Spring框架参考文档之IoC容器(未完成)
6. IoC容器 6.1 Spring IoC容器和bean介绍 这一章节介绍了Spring框架的控制反转(IoC)实现的原理.IoC也被称作依赖注入(DI).It is a process wher ...
- 通用权限管理系统接口文档V4.2 版本之角色管理功能介绍
角色功能维护界面:可实现添加.修改.删除角色,向角色添加或删除人员,角色具有哪些菜单的管理功能.
- Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.2 - 3.10】
Spring Boot 2.2.2.RELEASE版本中文文档持续更新中~如有需要获取参考文档文件,关注公众号JavaSo,回复“参考文档”即可. 3.2 结构化代码 Spring Boot不需要任何 ...
- Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.1】
使用Spring Boot 本节将详细介绍如何使用Spring Boot.它涵盖了诸如构建系统,自动配置以及如何运行应用程序之类的主题.我们还将介绍一些Spring Boot最佳实践.尽管Spring ...
- Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC
内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...
- iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明
iOS Foundation 框架概述文档:常量.数据类型.框架.函数.公布声明 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业 ...
- 0x02 Spring Cloud 学习文档
每个Spring项目都有自己的; 它详细解释了如何使用项目功能以及使用它们可以实现的功能. Spring Cloud 版本 参考文档 API文档 Finchley SR2 CURRENT GA Ref ...
- Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...
- Spring 4 官方文档学习(十一)Web MVC 框架
介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ...
随机推荐
- CDN系统对网站的性能有极大的提升
CDN系统对网站的性能有极大的提升 打开一个网站 我们只是请求了一个页面.单个页面,实际上所有文件都是一个新的请求.以新浪为例一共发起了35个请求. 这35个请求中.只有一个动态内容.其它均为静态.这 ...
- Retrofit源码分析(一)
1.基本用法 创建接口 public interface GitHubService { @GET("users/{user}/repos") Observable<List ...
- 用Navicat_SSH 连接数据库服务器
SSH设置(只限于Mysql.oracle.PostgreSQL及 SQL Server 并只支持 SSH2通讯协定) Secure SHell(SSH)是一个通过网络登录其他计算机的程序,在远程服务 ...
- 23种oop设计模式定义
创建型模式 单例模式:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实现. 工厂模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法使一个类的实例化延迟到子类. 抽象 ...
- WNDR3700V4 安装SVN Server
下文所用路由器型号为:WNDR3700V4 参考链接:http://dd-wrt.ca/phpBB2/viewtopic.php?t=86912&highlight=optware http: ...
- 魔性の分块 | | jzoj1243 | | 线段树の暴力
题目的打开方式是酱紫的 然而作为一只蒻蒟根本不会线段树该怎么办呢? sro MZX orz 是这样说的:用分块啊! 分块 根据紫萱学姐的教程,分块的打开姿势是这样的: 我们要对一个数组进行整体操作 ...
- 移动APP开发使用什么样的原型设计工具比较合适?
原型设计工具有Axure,Balsamiq Mockups,JustinMind,iClap原型工具,等其他原型工具.其中JustinMind比较适合APP开发使用. JustinMind可以输出Ht ...
- css3中的颜色
1颜色.color:rgba(R,G,B,A) R,G,B是分别代笔红,绿,蓝值是在0到255之间的数也可以是0.0% - 100.0%,A代表的是透明度0到1之间. 2.渐变.background- ...
- K/3 Cloud开发之旅 -- 主页自定义篇(一)
如果说我们要进行主页自定义篇,首先涉及到的就是登陆的自定义,那么如何进行登录界面的自定义呢 其实登陆界面自定义主要就是图片的替换 ,那么我们就看下登陆界面的图片的组成 登录页面底图有两部分组成,一个是 ...
- bootstrap模态框modal使用remote第二次加载显示相同内容解决办法
bootstrap模态框modal使用remote动态加载内容,第二次加载显示相同内容解决办法 bootstrap的modal中,使用remote可以动态加载页面到modal-body中,并弹窗显示 ...