基于注解驱动的Struts_Spring_Hibernate开发框架_第1页
基于注解驱动的Struts_Spring_Hibernate开发框架_第2页
基于注解驱动的Struts_Spring_Hibernate开发框架_第3页
基于注解驱动的Struts_Spring_Hibernate开发框架_第4页
基于注解驱动的Struts_Spring_Hibernate开发框架_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于注解驱动的Struts_Spring_Hibernate开发框架摘要:随着Java开源框架不断引进对注解(Annotation)的支持,使得开发人员可以用单方面去管理类及其之间关系,而不用像以往以XML配置文件的方式那样,一旦遇到问题,就要不断在Java视图和XML视图中切换。基于注解驱动的方式,大大减少了Struts、Spring、Hibernate的XML配置,配置与代码集中在同一个地方,可以很敏捷的进行即时反射,是架构轻量级Java Web应用的很好选择。关键词:Struts;Spring;Hibernate;注解(Annotation)1. 引言Struts + Spring +

2、Hibernate是目前国内外主流Java Web应用开发框架之一。Struts作为前台控制框架简化了程序的开发,使页面设计人员和Java程序编写人员达到有效的分离,降低系统架构的耦合性。Hibernate是一个O/R Mapping持久层框架的轻量级组件,对持久层进行了轻量级封装,降低了程序的复杂度。Spring作为一个应用于所有层面综合框架,具有强大的应用功能及灵活性,非常适合作为一些大规模软件项目的底层平台。随着Java开源框架不断引进对Annotation的支持,其传统的XML配置方式与Annotation配置方式相对比,传统的XML的配置方式的缺点是:代码与配置的分开,必须维护两份相

3、对应的代码(配置也可以认为是一种代码),相对比较烦琐,而Annotation方式代码与配置集中在同一个地方,修改比较方便,以很敏捷的进行即时反射,是架构轻量级Java Web应用的很好选择。育儿圈平台就是基于Annotation的方式架构的。2. Struts + Spring + Hibernate的体系架构大部分Web应用都可以按照职责分为表现层、业务逻辑层、数据持久层和领域模型层,每一层负责整个应用不同方面的职责,并且不应该和其他层有功能上的混合,应当每一层都应该和其他层隔离,只允许通过明确的接口在层与层之间进行通讯。下图是基于Struts + Spring + Hibernate框架的

4、基本体系架构图:图1 Struts + Spring + Hibernate框架的基本体系架构图表现层采用Struts框架,它执行如下的功能:1 管理客户端的请求并做出相应的应答。2 提供一个控制器,管理分派调用业务逻辑和其他上层处理。3 验证用户输入,确保用户输入的信息合法有效。4 处理异常,将所有异常抛给Struts Action统一处理。业务逻辑层采用Spring框架,它负责如下的功能:1 处理应用程序的业务逻辑和业务校验。2 统一管理事物。3 提供与其他相互作用的接口。4 管理业务级别的对象的依赖。5 在表现层和数据持久层之间增加了一个灵活的机制,避免两者的直接联系,实现松耦合编程。6

5、 在数据持久层上,构造出业务逻辑的上下文,提供业务逻辑服务。7 管理基于数据持久层的业务逻辑的实现。数据持久层的作用是让数据持久保留下来以及把持久保存的数据读取出来。数据持久层采用目前比较成熟的Hibernate框架,它为Java提供对象模型到关系模型的持久化和查询服务。Hibernate执行如下功能:查询关系数据以得到对象。执行数据的保存、修改和删除操作。领域模型层由实际需求中的业务对象组成。域模型层使得程序员能以自然的面向对象的方式工作,而不需要额外的编码。域模型层主要的作用是提供一个在不同层之间转移的对象集合。3. 在Struts_Spring_Hibernate架构中使用Annotat

6、ion3.1实体类的Annotation配置例如平台中的空间留言表实体类,其基于Annotation配置方式的代码如下图所示:其中:Entity定义Spacemessage类为实体类,Table定义该实体类在数据库中对应的表名。Id定义该属性对应的列为主键,SequenceGenerator和GeneratedValue指定主键的生成方式为序列生成方式(Oracle)。Column定义该属性对应表中的列名,以及其他如:unique(是否唯一)、nullable(可否为空)等属性。基于Annotation的配置方式省略了每个实体类一个hbm.xml配置文件的烦琐操作,看起来更加简洁、明了。3.2

7、 Dao和Manager组件的Annotation配置在育儿圈平台中,所有的DAO类都是继承自一个通用的泛型DAO类:SimpleHibernateTemplate<T, PK extends Serializable>。DAO和Manager组件基于Annotation方式配置的代码如下图所示:其中:Service表示SpacemessageManager类是一个service组件。Transactional表示使用Spring定义的事务管理器。Autowired表示Spring自动注册Bean,并检查Autowired的属性已被注入。如上所示,基于Annotation的配置,省

8、略了如下在Spring配置文件中的配置:3.3 Action组件的Annotation配置在育儿圈平台中,Action类的配置方式如下(以PostcommentAction为例):其中,ParentPackage("default")表示PostcommentAction在Struts中所属的包继承自名为“default”的包(default包在struts.xml文件中配置)。当然,除了ParentPackage注解外,还有Results(注解响应结果)、RequiredStringValidator(必填字符串验证)等注解,大大方便了我们处理表单信息的校验。Struts

9、.xml配置文件的配置如下:这里,struts.codebehind.pathPrefix属性的value值为页面文件的根路径。当然这里有一个约定,返回页面的路径为struts.codebehind.pathPrefix的value + PackageNamespace + ActionName + ActionReturntype + .ftl(因为育儿圈平台使用Freemarker模板文件作为视图表现方式,所以后缀名为ftl)。当Action的执行结果为SUCCESS时,ActionReturntype的值为空。所以,当blog.PostcommentAction执行结果为SUCCESS时

10、,其对应的模板文件为:/WEB-INF/template/blog/postcomment.ftl。3.4 使用Annotation方式的配置文件当然,使用Annotation方式并不是说不要任何的XML配置文件,只是大大地简化了而已,一些全局的、基本的配置还是需要的。例如:数据源,Hibernate的SessionFactory等,常用的配置如下:1) 让Spring通过自动扫描来查询和管理Bean其中,base-package属性定义了要扫描的包。2) Spring中的数据源配置3) Spring中的Hibernate的SessionFactory配置其中,packagesToScan属性

11、定义了要扫描的包。4) Spring中的事务配置5) web.xml文件配置当然,还不要忘了在web.xml中配置Spring和Struts。主要的配置如下图所示:其中,actionPackages属性定义了要以Annotion方式扫描的Action类的基本包目录。4. 结束语本文描述了基于注解(Annotation)驱动的SSH(Struts + Spring +Hibernate)开发框架。并结合育儿圈平台介绍了基本的基于Annotation的配置方式,如:实体类配置、DAO和Manager组件配置、Action组件配置等。随着Annotation的流行,Annotation渐有取代XML的配置作用之势,反对者有之,赞成者有之。虽然与传统的XML的配置方式相对比,Annotation方式有其自身的一些优点,如配置简单,配置与代码本身集中在同一个地方,修改比较方便等等。但是,Annotation不是万能的,它也有令人诟病的地方是,如:对Annotation的修改必须重新编译代码。因此,需要根据项目的需求,结合使用Annotation与XML。配置的使用原则:大部分情况下,配置是很少会变更的,特别是像服务类之间的相互依赖,因此对这部分可以使用Annotation的配置方式以简化开发,同时提供一些扩展以方便当需要特殊配置时,也能够方便处理;对一些变更机率比较大的部分,如全局系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论