目录
作为应用程序开发人员,你可以如何从 Spring 平台中受益的示例:
Spring简介、入门
Spring是公认最强大的框架之一。
Spring在英语中含义是春天,对于Java EE开发者来说,Spring框架出现确实带来了一股全新的春天的气息。
早在2002年,Rod Johson在其编著的《Expert one to one J2EE design and development》书中,对Java EE框架臃肿、低效、脱离现实的种
种现状提出了很多质疑,并积极寻求探索革新之道。由他主导编写了interface21框架,从实际需求出发,着眼于轻便、灵巧,易
于开发、测试和部署的轻量级开发框架。以interface21框架为基础,并集成了其它许多开源成果,于2004年3月24日,发布了
1.0正式版取名为Spring。
Spring的核心是个轻量级容器,实现了IoC(控制翻转)模式的容器,基于此核心容器所建立的应用程序,可以达到程序组件的
松散耦合。这些特性都使得整个应用程序维护简化。 Spring框架核心由下图所示的七个模块组成。
作为应用程序开发人员,你可以如何从 Spring 平台中受益的示例:
- 在数据库事务中执行Java方法,而不必处理事务 API 。
- 使本地Java方法成为远程过程,而不必处理远程 API 。 (意思就是无须管相关的远程调用api,
- Spring已经封装好了,你自己只需要专注自己的逻辑即可,下同,不再解释)
- 使本地Java方法成为管理操作,而不必处理 JMX API 。
- 使本地Java方法成为消息处理程序,而不必处理 JMS API 。
七大内容:
-
核心容器(Core)
-
AOP模块
-
对象/关系映射集成模块ORM
-
JDBC抽象和DAO模块
-
Spring的Web模块
-
应用上下文(Context)模块
-
Spring的MVC框架
1、核心容器(Core):
Spring框架控制反转(IoC)组件通过提供一种形式化的手段将不同的组件组成一个完全可用的应用程序来解决这个问题。
Spring框架将形式化的设计模式编译为可以集成到自己的应用程序中的第一类对象。
许多组织和机构以这种方式使用Spring框架来设计强大的,可维护的应用程序。
核心容器由 spring-core , spring-beans , spring-context , spring-contextsupport
和 spring-expression(Spring Expression Language)模块 组成。
spring-core 和 spring-beans 模块提供了框架的基本部分,包括 IoC 和依赖注入功能。
Context(spring-context) 模块建立在 Core和Beans模块 提供的实体基础之上:
它是一种以类似于 JNDI注册表 的框架样式方式访问对象的手段。
Context模块 从 Beans模块 继承其特性,并增加了对国际化(例如使用资源束),事件传播,
资源加载以及通过例如 Servlet容器 的透明创建上下文的支持。
Context模块 还支持 Java EE功能 ,如 EJB , JMX 和基本远程处理。
ApplicationContext 接口是 Context模块 的焦点。 spring-context-support 提供支持将常见的第三方库集成到
Spring 应用程序上下文中,
特别是用于缓存( EhCache , JCache )和定时任务等( CommonJ , Quartz )。
spring-expression 模块提供了一个强大的表达式语言,用于在运行时查询和操作对象图它是JSP 2.1规范中规定
的统一表达式语言(统一 EL )的扩展。 该语言支持设置和获取属性值,
属性赋值,方法调用,访问数组的内容,集合和索引器,逻辑和算术运算符,命名变量,
以及通过 Spring IoC 容器中的名称检索对象。 它还支持列表投影和选择以及公共列表聚
2、AOP模块:
AOP即面向切面编程技术,Spring在它的AOP模块中提供了对面向切面编程的丰富支持。
AOP允许通过分离应用的业务逻辑与系统级服务(例如安全和事务管理)进行内聚性的开发。
应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责其它的系统级关注点,例如日志或事务支持。
spring-aop 模块提供了一个符合 AOP Alliance-compliant 的面向方面的编程实现,
允许你定义例如方法拦截器和切入点来干净地解耦实现应该分离的功能的代码。
使用源代码级元数据功能,你还可以以类似于 .NET 属性的方式将行为信息合并到代码中。
单独的 spring-aspects 模块提供与 AspectJ 的集成。
spring-instrument-tomcat 模块提供类仪器支持和类加载器实现以在某
些应用服务器中使用。 spring-instrument-tomcat 模块包含 Spring 的 Tomcat 的工具代理。
3、对象/关系映射集成模块ORM
Hibernate是成熟的ORM产品,Spring并没有自己实现ORM框架而是集成了几个流行的ORM
产品如Hibernate、JDO和iBATIS等。可以利用Spring对这些模块提供事务支持等。
4、JDBC抽象和DAO模块
Spring虽然集成了几个ORM产品,但也可以不选择这几款产品,因为Spring提供了JDBC和DAO模块。该模块对现有的
JDBC技术进行了优化。你可以保持你的数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题。
数据访问/集成层由 JDBC , ORM , OXM , JMS 和 Transaction 模块组成。
spring-jdbc 模块提供了一个 JDBC 抽象层,消除了对繁琐的 JDBC 编码和解析数据库供应商特定的错误代码的需要。
spring-tx 模块支持实现特殊接口的类以及所有 POJO (普通 Java 对象)的编程和声明事务管理。
spring-orm 模块为流行的对象关系映射 API 提供集成层,包括 JPA 和 Hibernate 。
使用 spring-orm 模块,您可以使用这些 O / R 映射框架结合 Spring 提供的所有其他功能,例如前面提到的简单声明式事务管
理功能。
spring-oxm 模块提供了一个支持 对象/ XML 映射实现的抽象层,例如JAXB,Castor,JiBX和XStream。
spring-jms 模块(Java消息服务) 包含用于生成和使用消息的功能 。从 Spring Framework 4.1 开始,它提供了与 spring-
messaging 模块的集合。
5、Spring的Web模块
Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支
持。
例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。Web 层由 spring-
web , spring-webmvc 和 spring-websocket 模块组成。( 注:这里和4的文档比少了spring-webmvc-portlet模块 )spring-
web 模块提供基本的面向 Web 的集成功能,例如多部分文件上传功能和使用 Servlet 侦听器和面向 Web 的应用程序上下文来初
始化 IoC 容器。
它还包含一个 HTTP 客户端和 Web 的相关部分的 Spring 的远程支持。spring-webmvc 模块(也称为 Web-Servlet 模块)包
含用于 Web 应用程序的 Spring 的模型视图控制器(MVC)和REST Web服务实现。 Spring 的 MVC 框架提供了 domain
model (领域模型)代码和 Web 表单之间的清晰分离,并且集成了 Spring Framework 所有的其他功能。
6、应用上下文(Context)模块
核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架。Web上下文模块建立于应用上下文模块之
上,提供了一个适合于Web应用的上下文。该模块还提供了一些面向服务支持这个模块扩展了BeanFactory的概念,增加了对国
际化(I18N)消息、事件传播以及验证的支持。
另外,这个模块还提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包
括对模版框架例如Velocity和FreeMarker集成的支持。
7、Spring的MVC框架
Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts2,但
Spring的MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离。