spring framework

spring framework介绍

Spring是什么呢?首先它是一个开源的项目,而且目前非常活跃;它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transaction Management,等等

入门攻略

编辑 Spring的基础思想来源于Rod Johnson的一本著名的j2ee书籍:Expert One-on-One J2EE Design and Development (Programmer to Programmer),在这本书中,Rod根据他自己多年的j2ee开发经验,提出了众多新颖的思想,当然如果想看这本书的话,最好看英文版,因为中文版被翻译的惨不忍睹,看了会几天吃不下睡不着的...... 在上面那本书附带的代码基础上,以Rod Johnson和Juergen Hoeller两人为核心的一个开发团队经过努力,于2004年3月份发布了Spring Framework 1.0版,一经发布就引起了业界的强烈关注,目前各种java相关的会议中都有Rod Johnson等人的出现,最近Rod Johnson和Juergen Hoeller两人合作了一本新书。 Expert One-on-One J2EE Development without EJB也已出版热销,可惜的目前国内尚无法看到。目前,Spring Framework已经接近发布1.1 RC1,从Spring的邮件列表看,Juergen Hoeller正在组织最后的修改和测试,估计几日内就可以看到他们努力的成果。 另外,围绕在Spring周围的一些相关项目也在活跃的开展着,其中在Spring Framework首页上提供链接的Acegi Security System for SpringFramework是其中的佼佼者,该项目的主要目的是为SpringFramework提供安全机制,它充分利用Spring的AOP,采用Spring的风格,很容易让熟悉Spring的开发人员上手。此外,SpringFramework也开始了.Net版本的开发,当然目前处于起步阶段,而且是另外一个团队在开发。 目前在使用Spring的开发人员中,多数人倾向于Struts+Spring+Hibernate的组合,但经过本人的学习,我感觉Spring提供的 MVC框架更为出色优雅,无须Struts的介入,如果没有历史遗留问题的困扰(如已经存在大量Struts代码或者开发人员已经对Struts非常熟悉),建议采用Spring+Hibernate,再加上Acegi实现认证和授权,将是很不错的开发框架。 至于开发环境,随着eclipse3.0的发布,采用这一free的IDE,再加上一些free的plugin,将可以组织出一套非常出色的集成开发环境:eclipse3.0 + XmlBuddy 2.0.10 + Lomboz3.0 + Spring IDE for Eclipse。在Spring的开发团队中,Rod Johnson是eclipse的支持者,而Juergen Hoeller更喜欢JetBrains的IDEA,目前IDEA已经到了4.5 RCVIII版,比4.0又有了很大的提高,如果有钱的话更推荐使用IDEA。 Spring Framework 是一个 Java/Java EE/.NET 的分层应用程序框架。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一文中的代码,并最初由 Rod Johnson 和 Juergen Hoeller et al 开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。

关键特性

◆强大的基于 JavaBeans 的采用控制反转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易。 ◆一个可用于从 applet 到 Java EE 等不同运行环境的核心 Bean 工厂。 ◆数据库事务的一般化抽象层,允许插件式事务管理器,简化事务的划分使之与底层无关。 ◆内建的针对 JTA 和 单个 JDBC 数据源的一般化策略,使 Spring 的事务支持不要求 Java EE 环境,这与一般的 JTA 或者 EJB CMT 相反。 ◆JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码), 简化了错误处理, 大大减少了程序员的编码量. 再次利用JDBC时,你无需再写出另一个“终止”模块。 并且面向JDBC的异常与Spring 通用数据访问对象 (Data Access Object) 异常等级相一致。 ◆以资源容器,DAO 实现和事务策略等形式与 Hibernate,JDO 和 iBATIS SQL Maps 集成。利用众多的翻转控制方便特性来全面支持,解决了许多典型的Hibernate集成问题。所有这些全部遵从Spring通用事务处理和通用数据访问对象异常等级规范。 ◆灵活的基于核心 Spring 功能的 MVC 网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现技术,例如 JSP,FreeMarker,Velocity,Tiles,iText 以及 POI。值得注意的是,Spring 中间层可以轻易地结合于任何基于 MVC 框架的网页层,例如 Struts,WebWork,或 Tapestry。 ◆提供诸如事务管理等服务的面向方面编程框架。 在设计应用程序Model时,MVC 模式(例如Struts)通常难于给出一个简洁明了的框架结构。Spring却具有能够让这部分工作变得简单的能力。程序开发员们可以使用Spring的 JDBC 抽象层重新设计那些复杂的框架结构。

下属产品

Spring 核心产品 Spring Web Flow Web工作流的产品,里面集成了Spring 的MVC Spring Security 认证和集成方面的组件 Spring Web Services Web服务的工具类 Spring Batch 执行Java批处理的工具类 Spring Dynamic Modules 动态维护模块的工具类 Spring Integration 集成工具 Spring JavaConfig 配置工具类 Spring中包含的关键特性:
强大的基于JavaBeans的采用控制反转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易。
一个可用于Java EE等运行环境的核心Bean工厂。
数据库事务的一般化抽象层,允许声明式(Declarative)事务管理器,简化事务的划分使之与底层无关。
内建的针对JTA和单个JDBC数据源的一般化策略,使Spring的事务支持不要求Java EE环境,这与一般的JTA或者EJB CMT相反。
JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理,大大减少了程序员的编码量。再次利用JDBC时,你无需再写出另一个’终止’(finally)模块。并且面向JDBC的异常与Spring通用数据访问对象(Data Access Object)异常等级相一致。
以资源容器,DAO实现和事务策略等形式与Hibernate,JDO和MyBatis、SQL Maps集成。利用众多的翻转控制方便特性来全面支持,解决了许多典型的Hibernate集成问题。所有这些全部遵从 Spring 通用事务处理和通用数据访问对象异常等级规范。
灵活的基于核心 Spring 功能的MVC网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现(View)技术,例如JSP、FreeMarker、Velocity、Thymeleaf 等。值得注意的是,Spring 中间层可以轻易地结合于任何基于MVC框架的网页层,例如Struts、WebWork或Tapestry。
提供诸如事务管理等服务的AOP框架。
在设计应用程序 Model 时,MVC模式(例如Struts)通常难于给出一个简洁明了的框架结构。Spring 却具有能够让这部分工作变得简单的能力。程序开发员们可以使用Spring的JDBC抽象层重新设计那些复杂的框架结构。  

架包

spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以,搞清楚它们之间的关系,配置maven依赖就可以简洁明了,下面举个例子,要在普通java工程使用spring框架,需要哪些jar呢?只要一个
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.2.17.RELEASE</version>
</dependency>

在web工程中引入spring mvc <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.2.17.RELEASE</version>
</dependency>


上一篇:SSH框架之Struts2第一篇


下一篇:SSH框架之Struts2第一篇