[翻译]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 ...
随机推荐
- nerual style 执行命令
python neural_style.py --content ./examples/4-content.jpg --styles ./examples/4-faguo-style.jpg --ou ...
- Qt 程序访问 sqlite 权限错误
在Linux桌面上开发应用,想要拥有root权限,可是又需要弹窗申请.所以尽量避免这种情况发生. 另外:gksu,pkexec可以提供gui的root权限索取功能. 因为db文件是安装的时候放到etc ...
- Markdown 基本入门使用
http://www.appinn.com/markdown/ markdown快速入门Markdown 常用语法: # 标题 强调:用星号(*)和底线(_)作为标记强调字词的符号,如果你的 * 和 ...
- mysql 行变列(多行变成一行/多行合并成一行/多行合并成多列/合并行)
数据库结构如图: 而我想让同一个人的不同成绩变成此人在这一行不同列上显示出来,此时分为2中展现: 第一种展现如图----[多行变一列](合并后的数据在同一列上): sql如下: select name ...
- [转载]centos安装svn服务器
一.安装Subversion #yum install subversion 1.查看安装时的文件产生情况,使用 rpm -ql subversion 2.卸载subversion:#yum re ...
- WIN2003使用IP安全策略只允许指定IP远程桌面连接
一,新建IP安全策略 WIN+R打开运行对话框,输入gpedit.msc进入组策略编辑器. 依次打开“本地计算机”策略--计算机配置--Windows设置--安全设置--IP安全策略,在 本地计算机上 ...
- DIV弹出和关闭新DIV
代码用HTML+JS实现: 代码(用HTML+JS实现): <!doctype html> <html lang="UTF-8"> <head> ...
- 1 Java线程的内存可见性
Java内存的可见性 可见性: 一个线程对共享变量的修改,能够及时被其它线程看到 共享变量: 如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量 Java内存模型(JM ...
- ServiceStack.OrmLite中的一些"陷阱"(1)
使用过ServiceStack.Ormlite的人都应该知道,其作为一个轻量级的ORM,使用的便捷度非常高,用起来就一个字:爽!而支撑其便捷度的,是库内大量地使用了扩展方法及静态变量. 首先先从源头入 ...
- 遍历指定目录下指定类型文件的函数(fatkun Fix版)
// ================================================================ // 遍历某个文件夹及子文件夹下某种文件, // 使用说明 // ...