中程在线信息产业培训网(www.miiceic.org.cn)
SpringFramework是一个采用了反转控制(InversionofControl,Ioc)策略的基于J2EE的轻量级应用框架。SpringFramework的核心是IoC容器,对于其它应用,如数据库访问,日志等,SpringFramework多使用现有的、成熟的框架。SpringFramework采用了模块化的方式,各模块可以共同使用,也可以单独使用其中的一个模块,SpringFramework的一个模块提供了对动态AOP的支持,SpringFramework中提供的声明式事务管理就是基于动态AOP的。
SpringFramework中AOP的实现基于动态代理(DynamicProxy),动态代理源于代理模式,即通过接口实现对业务对象的访问,但动态代理无需为每一个需代理的业务对象静态的生成代理对象,只需提供需要代理的接口与代理实现,就可以在运行时动态的生成代理对象,代理对上述接口的访问,同样的机制也使用于对类的代理,使用类似于修饰者的模式,通过子类化实现。SpringFramework默认使用JDK提供的动态代理机制,此时,业务对象通过接口编程,若需要代理对类的访问,则需要使用CGLIB,这是一个开源的动态代理实现。
SpringFramework的AOP实现不同于AspectJ与AspectWerkz,它不是完全的AOP实现,而是设计用于在应用服务器环境下实现AOP,与SpringFramework的IoC容器配合使用。SpringFramework中参考,切入点与方面均由普通Java对象实现,其中连接点模型与AspectJ相同,只是远不如AspectJ丰富,目前只提供对方法调用的拦截。有4种类型的参考,分别为方法调用时,之前,返回时与抛出异常时,通过实现SpringFramework的参考接口可以自定义参考类型。在SpringFramework中,方面称为Advisor,是一个包含参考与切入点的Java类。像其它由IoC容器管理的组件一样,参考,切入点与方面也由IoC容器管理,由XML配置文件定义。配置的内容包括业务对象的接口与实现,自定义的或由SpringFramework提供的切入点与参考类,或使用Adviser类取代单独的切入点与参考类。在运行时,通过IoC容器进行名称查找,就可以由容器使用代理机制自动产生代理对象,并在符合切入点定义的连接点处执行参考。
SpringFramework除自身实现的AOP框架外,还在寻求与其它AOP实现机制的整合,目前已经实现了与AspectJ的整合,以利用AspectJ丰富的切入点语法,并利用AspectJ的方面实现。
简单说说SpringFramework
正如一篇文章中所说,如果到现在为止还没有了解了解Spring的话,那你已经错过了一些重要的东西。前两天见到一个刚工作的师弟,他告诉我他们公司将使用 Spring来构架系统的下一个版本,非常欣喜国内也有越来越多的人关注到了Spring。
Spring是什么呢?首先它是一个开源的项目,而且目前非常活跃;它是一个基于IoC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的 接口,采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等......
Spring的基础思想来源于Rod Johnson的一本著名的j2ee书籍:Expert One-on-One J2EE Design and Development (Programmer to Programmer),在这本书中,Rod根据他自己多年的j2ee开发经验,提出了众多新颖的思想,当然如果想看这本书的话,最好看英文版,因为中文版被翻译的惨不忍睹,看了会几天吃不下睡不着的......
在上面那本书附带的代码基础上,以Rod Johnson和Juergen Hoeller两人为核心的一个开发团队经过努力,于今年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相关的一些链接,方便大家找到相关信息:
官方网站:http://www.springframework.org
Spring IDE for Eclipse:http://www.springframework.org/spring-ide/eclipse/
官方论坛:http://sourceforge.net/forum/?group_id=73357
中文论坛:http://spring.jactiongroup.net/
Matt Raible的Blog: http://www.jroller.com/page/raible (全是Spring的相关信息)
邮件列表:http://sourceforge.net/mail/?group_id=73357
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=49697