英文链接: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平台提供了丰富的应用程序开发功能,它缺少组织基础的构建块成为一个合作的整体的方法,它将这个任务留给了架构师和开发者。尽管你可以使用设计模式比如:工厂,抽象工厂模式,构造者模式,装饰者,和服务定位(FactoryAbstract FactoryBuilderDecorator, 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-corespring-beansspring-contextspring-context-support和 spring-expression(Spring Expression Language) 模块组成。

  spring-corespring-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 集成项目中抽象出来的关键词,比如:消息,消息通道,消息处理器(MessageMessageChannelMessageHandler)以及其他作为一个消息的应用程序的基础。这个模块同样包括一系列注入用于映射消息到方法中,就像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-webspring-webmvcspring-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待继续的更多相关文章

  1. 译:Spring框架参考文档之IoC容器(未完成)

    6. IoC容器 6.1 Spring IoC容器和bean介绍 这一章节介绍了Spring框架的控制反转(IoC)实现的原理.IoC也被称作依赖注入(DI).It is a process wher ...

  2. 通用权限管理系统接口文档V4.2 版本之角色管理功能介绍

    角色功能维护界面:可实现添加.修改.删除角色,向角色添加或删除人员,角色具有哪些菜单的管理功能.

  3. Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.2 - 3.10】

    Spring Boot 2.2.2.RELEASE版本中文文档持续更新中~如有需要获取参考文档文件,关注公众号JavaSo,回复“参考文档”即可. 3.2 结构化代码 Spring Boot不需要任何 ...

  4. Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.1】

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

  5. Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC

    内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...

  6. iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明

    iOS Foundation 框架概述文档:常量.数据类型.框架.函数.公布声明 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业 ...

  7. 0x02 Spring Cloud 学习文档

    每个Spring项目都有自己的; 它详细解释了如何使用项目功能以及使用它们可以实现的功能. Spring Cloud 版本 参考文档 API文档 Finchley SR2 CURRENT GA Ref ...

  8. Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图

    接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...

  9. Spring 4 官方文档学习(十一)Web MVC 框架

    介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ...

随机推荐

  1. Ubuntu15下mysql5.6.25解决不支持中文的办法

    apt-get install 安装的,不是源码包安装的mysql 1 修改mysql的配置文件 /etc/mysql/conf.d/mysql.cnf 在[mysql]的下方加入如下语句:(注:这个 ...

  2. double四舍五入,double四舍五入并转成string

    import java.math.BigDecimal; /** * 处理一些数据类型的方法的java类 * @author ljb * */public class NumberTools { /* ...

  3. MVC中的常见问题

    1.  The model backing the 'MusicStoreDBContext' context has changed since the database was created. ...

  4. Matlab(1) -- Matlab清屏命令

    这里介绍 matlab 中三种不同的清理变量.显示窗口或图形的命令. 一.比较重要的清理:清除变量命令:clear 说明:运行m文件之前一般都需要该命令,否则可能出错. 二.比较常用的清理:清理当前命 ...

  5. linux 查看php-fpm 进程数

    netstat -napo |grep "php-fpm" | wc -l

  6. javascript判断变量是不是空值

    JavaScript本身没有判断一个变量是不是空值的函数,因为变量有可能是string,object,number,boolean等类型,类型不同,判断方法也不同.所以在文章中写了一个函数,用以判断J ...

  7. DB2死锁的解决办法

    db2 get snapshot for locks on sampledb2 get db cfg for sampledb2 update db cfg using dlchktime 10000 ...

  8. js阻止提交表单(post)

    在注册页面,我们经常要用到页面验证,验证到不符合要求的数据就阻止提交到服务器,如下 <script type="text/javascript"> function C ...

  9. 使用TFS 自动编译时的一点设置

    MSBuild参数:  /p:VisualStudioVersion=10.0 指定使用的VS编译版本

  10. delegate notification kvo三者比较

    IOS 如何选择delegate.notification.KVO? 前面分别讲了delegate.notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类 ...