[翻译]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 ...
随机推荐
- myeclipse10的激活
myeclipse 提醒了我好几天要激活,今天操作了下,出现的问题分享一下. 在激活工具里面没有找到cracker.jar,按照指导双击run.bat,但是打开之后闪一下就自动关闭了,不得其解.然后搜 ...
- 模拟器报Installation error: INSTALL_FAILED_CONTAINER_ERROR解决方法
今天刚刚导入了一个项目,但是多次导入,始终有错误,解决不了.第一次是我导入项目之后,项目前边有红色叉号,但是项目里面却没有错误标志.重新打开Eclipse,方解决了这个问题.但是,在模拟器上运行,却始 ...
- hadoop2.6源码导入mvn出错Missing tools.jar问题解决方案
1.定义JAVA_HOME: JAVA_HOME=$(/usr/libexec/java_home) 2.拷贝文件 cd $JAVA_HOME mkdir Classes ...
- PHP的字符串函数
1.字符串的连接 字符串可以使用字符串连接符(.)来连接 常见的用途是建立大块的HTML字串代码,赋值号 (=) 连接符 (.) 可以被简写合并为 (.=) 符号 2.在字符串中使用变量 这个功能 ...
- 【如何快速的开发一个完整的iOS直播app】(原理篇)
原文转自:袁峥Seemygo 感谢分享.自我学习 目录 [如何快速的开发一个完整的iOS直播app](原理篇) [如何快速的开发一个完整的iOS直播app](播放篇) [如何快速的开发一个完整的 ...
- mysql备份文件注释乱码处理工具
我们有时候需要做mysql数据库的注释,可是备份出来的是乱码,怎么办呢? 本工具软件来帮你的忙. 将GBK库备份后的文本文件中夹带的UTF8乱码转换为GBK编码,就不再乱码了. http://down ...
- workflow createPath
针对不同的流程,createpath不同,但是创建审批链,和创建表都有 1.GetUserInfoByListColumn 控件已创建的.先Rebuild,属性需要注意 2.CreateListIte ...
- [转]Snappy压缩库安装和使用之一
Snappy压缩库安装和使用之一 原文地址:http://blog.csdn.net/luo6620378xu/article/details/8521223 近日需要在毕业设计中引入一个压缩库,要求 ...
- DEV word文档转换为pdf文件
引用aspose.net控件2.0. docement doc=new document(文件路径和名称); doc.save(输出路径\file.pdf);
- OpenCV linux cmake添加使用
安装好opencv之后: 只需要添加一下,就可以方便的使用opencv了,find_package opencv 会寻找FindOpenCV.cmake find_package(OpenCV REQ ...