您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > Struts2整合Spring开发
第14章Struts2整合Spring开发•Spring框架是一个非常优秀和流行的轻量级JavaEE容器。通过使用Spring容器来管理Web应用中的组件,从而降低个组件之间的耦合度。•SSH整合开发是一个非常好的企业级开发方案。使用Spring的Ioc容器来负责创建和管理组件,其中这些组件包括前端的业务控制器,中间的业务逻辑组件,以及最底层的DAO组件。这些组件都处于Spring的Ioc容器的管理,从而大大降低各组件之间的耦合度。14.1初探Spring•14.1.1Spring简介•14.1.2下载和安装Spring•14.1.3Spring的Ioc应用14.1.1Spring简介•本章来学习另一个流行框架Spring,并学习使用Struts2整合Spring进行开发。简单来说,Spring是一个轻量级的IoC和AOP容器框架。通过其核心的依赖注入机制,以及AOP的声明式事务管理,与持久层框架整合,以及与其他的MVC框架整合为企业应用提供了一个轻量级的解决方案。•SSH整合开发,就是指整合Struts、Spring、Hibernate来进行开发。SSH整合开发是一个非常好的企业级开发方案。使用Spring的Ioc容器来负责创建和管理组件,其中这些组件包括前端的业务控制器,中间的业务逻辑组件,以及最底层的DAO组件。这些组件都处于Spring的Ioc容器的管理,从而大大降低各组件之间的耦合度。•Spring框架有如下优势。•轻量级,非侵入式:基于Spring开发应用时新建的类一般都无需继承Spring中的类。•反向控制:又称为依赖注入和IoC。使用方向控制,对象是被动接收依赖类而不是主动去找,从而降低耦合度。•面向切面:又称为AOP。使用面向切面编程,可以将业务逻辑从系统服务中抽取出来,实现内聚开发。•Spring是免费的、开放源代码的。•Spring拥有众多社区支持。14.1.2下载和安装Spring•首先登录Spring框架官方站点,如图14-1所示。在下载列表中选择下载Spring2.0.8版本。14.1.3Spring的Ioc应用•在介绍Spring的依赖注入之前,首先来看一个普通的Java应用。首先定义个Person接口,该接口中包含一个go()方法,代码如下所示。•packagenet.hncu.demo01;•publicinterfacePerson{•//Person接口包含一个go方法•publicvoidgo();•}•新建Student类,该类实现Person接口,并实现Person接口中的go()方法,代码如下所示。•packagenet.hncu.demo01;•publicclassStudentimplementsPerson{•//实现Person接口中的go方法•publicvoidgo(){•System.out.println(去教室上课);•}•}14.2Spring的依赖注入•使用Spring的依赖注入可以为对象注入属性值。Spring的依赖注入分为两种,一种是通过Set方法注入依赖,一种是通过够构造函数注入依赖。14.2.1通过Set方法注入依赖•下面来看如何通过Spring的依赖注入来为对象注入属性值。首先修改Student类,为其添加name属性,以及name属性的setter和getter方法,代码如下所示。14.2.2引用其他的Bean•有时候实例需要调用其他类的实例,这时可以不用直接调用实例。而是在Spring容器中创建该实例,并将该实例注入到需要调用它的实例中。•修改Teacher类,添加属性student,以及student属性的setter和getter方法,代码如下所示。14.2.3使用构造函数注入依赖•前面介绍了如何通过Set方法注入依赖,Spring还允许使用构造方法注入依赖。•修改Teacher类,为其添加构造函数,其中构造函数接受两个参数,分别为name和student。14.3Spring的自动装配•前面已经介绍了如何通过使用property元素来装配Bean中的属性。Spring还支持一种自动装配,通过该自动装配可以不用添加property元素直接装配Bean中的属性,而是自动的装配Bean中属性。14.3.1自动装配分类•前面已经了解了如何通过使用property元素来装配Bean中的属性。Spring还支持一种自动装配,需要在bean元素中添加autowire属性,并指定自动装配类型,代码如下所示。•beanid=teacherclass=net.hncu.demo05.Teacherautowire=自动装配类型•propertyname=name•value张老师/value•/property•/bean•自动装配包含如下四种类型。•byName:在IoC容器中寻找与Bean中属性名相同的id对应的Bean,如果找不到相符合的Bean,则该属性没有被装配上。•byType:在IoC容器中寻找与Bean中属性相同类型的Bean,如果找不到相符合的Bean,则该属性没有被装配上。如果找到多个相符合的Bean,则会抛出异常。•constructor:在IoC容器中寻找与Bean中构造函数参数一致的一个或多个Bean。如果存在不确定的Bean,则会抛出异常。•autodetect:自动模式,首先尝试使用constructor来自动装配,然后使用byType方式。14.3.2byName自动装配•修改id为teacher的Bean配置,使用byName自动装配。这时就不用使用property元素来装配Teacher类的student属性,Spring会自动将id为student的Bean实例注入到TeacherBean实例的student属性中,代码如下所示。14.3.3byType自动装配•修改id为teacher的Bean配置,使用byType自动装配。这时将在IoC容器中寻找与Bean中属性相同类型的Bean。因为TeacherBean中student属性类型Student,所以会在IoC容器中寻找类型为Student的Bean,并将类型为Student的Bean实例注入到TeacherBean实例的student属性中,代码如下所示。•?xmlversion=1.0encoding=UTF-8?•beansxmlns=•xmlns:xsi=•xsi:schemaLocation=://•beanid=student22class=net.hncu.demo05.Student•propertyname=name•value小强/value•/property•/bean•beanid=teacherclass=net.hncu.demo05.Teacherautowire=byType•propertyname=name•value张老师/value•/property•/bean•/beans14.3.4constructor自动装配•修改id为teacher的Bean配置,使用constructor自动装配。这时将在IoC容器中寻找与TeacherBean中构造函数参数一致的Bean。因为TeacherBean中的构造函数包含两个参数,分别为name和student,所以会在IoC容器中寻找类型与name参数和student参数相对应的Bean,代码如下所示。14.4Struts2整合Spring开发•通过整合Struts2和Spring框架,从而通过Spring容器来管理Struts2中的Action。该整合充分利用了Spring的Ioc特性,是非常优秀的解耦策略。14.4.1安装Spring插件完成整合•整合Spring之前首先需要为Web应用添加Spring所需的JAR文件,然后修改web.xml文件。通过添加一个Listener,使得Web应用启动时会自动查找WEB-INF目录下的applicationContext.xml配置文件,并根据该配置文件来创建Spring容器,代码如下所示。14.4.2整合策略•在没有使用Spring框架之前,使用工厂模式来创建业务逻辑组件实例,从而将控制器与业务逻辑组件分离开。同样使用工厂模式创建DAO组件实例,从而将业务逻辑与DAO组件分离开。显示,使用工厂模式可以大大降低耦合度,如图14-2所示。•使用Spring框架之后,就可以使用Spring来管理控制器,并通过依赖注入的方式为控制器注入业务逻辑组件实例。同样也可以通过依赖注入为业务逻辑组件注入DAO组件实例,如图14-3所示。14.5整合Spring完成登录案例•前面介绍了如何在Strtus2中如何安装Spring插件,并介绍了Struts2和Spring框架的整合策略。下面介绍如何通过整合Struts2和Spring框架来完成登录案例。14.5.1修改控制器Action及配置•下面通过整合Spring来改进以前的登录案例。首先修改登录控制器LoginAction,为其添加类型为LoginCheck的属性lc,并为该属性添加setter方法。该属性用来接收注入的业务逻辑组件。14.5.2依赖注入业务逻辑组件•修改Spring配置文件applicationContext.xml,配置登录控制器对应的实例,并将业务逻辑组件注入到Action实例中,代码如下所示。•?xmlversion=1.0encoding=UTF-8?•beansxmlns=•xmlns:xsi=•xsi:schemaLocation=://•!--创建业务逻辑组件实例--•beanid=loginCheckclass=net.hncu.service.LoginCheck/bean•!--创建控制器实例--•beanid=loginActionclass=net.hncu.action.LoginAction•propertyname=lcref=loginCheck/property•/bean•/beans14.6整合Spring完成产品管理案例•通过整合Struts2、Hibernate以及Spring框架。并使用Spring的Ioc容器来负责创建和管理组件,其中这些组件包括前端的业务控制器,中间的业务逻辑组件,以及最底层的DAO组件。这些组件都处于Spring的Ioc容器的管理,从而大大降低各组件之间的耦合度。14.6.1使用Spring容器管理SessionFactory•下面通过整合Spring来改进以前的产品管理案例。在以前的案例里,我们通过代码来手动初始化SessionFactory。现在我们可以通过Spring来配置和管理SessionFactory。同时该SessionFactory为其他DAO组件的持久化访问提供支持。14.6.2使用HibernateTemplate进行数据库操作•Spring还提供了一个模板
本文标题:Struts2整合Spring开发
链接地址:https://www.777doc.com/doc-4449532 .html