Stru ts2+Sp ring+Hibernate在企业人事管理系统中的
应用
孙 璐1,2
【摘 要】研究了Struts2和 Spring整合的方式方法、Spring和 Hibernate整合的方式方法以及 Struts2、Spring和Hibernate三种技术整合的最佳方案。在实际项目企业人事管理系统中应用了Struts2、Spring和Hibernate整合技术。
【期刊名称】软件导刊 【年(卷),期】2010(009)009 【总页数】4
【关键词】Struts2;Spring;Hibernate;企业人事管理系统
1 Struts2简介
Struts2技术架构是2007年才推出的一种全新的框架。它不是Struts1的升级版本,实际上它是在WebWork的基础上发展而来的。Struts2本身实现了MVC,并且简化了基于MVC模式的Web应用程序的开发,具有模块化、灵活性和重用性的特点。从用户的角度来看,Struts2一共包含三大块的内容,分别是Struts2的核心类、Struts2的配置文件和Struts2的标签库。
2 Struts2、Spring和Hibernate整合的关键技术
2.1 Struts2与Spring整合的各种方式的探讨与比较
Struts2和Spring整合的方式很多,一般采用三种方式:①Spring的 ActionSupport类整合 Struts;②Spring的 DelegatingRequestProcessor覆盖 Struts的 RequestProcessor;③Struts Action管理委托给Spring框架。
2.1.1 Spring 的 ActionSupport类整合 Struts
这种方法是Action不再继承Struts提供的Action,而是继承Spring提供的 ActionSupport类。然后在Action中获得Spring的ApplicationContext。实现过程如下: 在
这
种
方
式
中
,
Action
是
从
org.springframework.web.struts.ActionSupport继承来的,这样就使得Struts和Spring紧密耦合在一起。
2.1.2 Spring 的 DelegatingRequestProcessorRequestProcessor
在这种方式中,由Spring来注入对象。获得Application-Cotext和依赖注入的工作都在DelegatingRequestProcessor中完成,通过setXXX()方法来完成依赖注入。实现过程如下:
2.1.3 Struts Action 管理委托给 Spring 框架
Action的创建和对象的依赖注入全部由IOC容器来完成。Sprng的IoC容器会在Web应用启动时完成初始化,并且成为Struts2框架默认的objectFactory,实现方式和第二种方式相同。首先 struts2.xml在 struts.xml文件中配置常量。
<constant name="struts.objectFactory"value="spring"> < /constant>
说明:默认情况下所有由Struts2框架创建的对象都是有ObjectFactory实例化的,ObjectFactory提供了与其他IoC容器如 Spring 集 成 的 方 法 。 在 这 里 用 org.apache.struts2.spring.StrutsSpringObjectFactory代替了默认
覆盖 Struts 的
的ObjectFactory。也就是说,处理用户请求的Action并不是由Struts2框架创建的,而是由Spring创建的。 然后通过setXXX()完成依赖注入。 最后在 applicationContext.xml文件中添加
<!-Action的实例化由spring来完成,这时需要依赖注入业务逻辑Service组件-->
在这种方式中,我们让Action的实例化由Spring来完成,这时需要使用Spring的IoC功能将业务逻辑Serivce组件注入到Action对象中。这种方式有一个明显缺陷:所有的Action都需要在 applicationContext.xml中进行配置,而 Struts.xml文件中还需要配置同样的Action。对于有成百上千个Action的一般应用,配置文件就会过于庞大臃肿。我们可以采用Spring的自动装配功能。
为了简化,可以在Spring对Struts的集成中使用Spring的自动装配功能。在这种策略下,Action还是由Spring创建,但Spring在创建Action实例时,会将对应的业务逻辑组件自动注入Action实例。通过使用自动装配,就不再需要在applicationContext.xml中对 Action 进行配置。 2.2 Spring与Hibernate整合方式的探讨
Hibernate的SessionFactory可以在Spring的配置文件中定义,然后在应用程序中可以通过IoC机制访问它。
Spring可以与Hibernate结合使用Hibernate的连接,事务管理等是由建立SessionFactory开始的,SessionFactory在应用程序中通常只需要存在一个实例,因而SessionFactory底层的DataSource可以使用Spring的IoC注入,