Spring框架(JavaEE开发进阶Ⅲ)—spring和struts2、hibernate的集成

一、主要内容
1、引入jar包
2、web.xml配置文件
3、Spring应用上下文配置文件
4、struts.xml配置文件
5、整合项目架构

二、引入jar包
1、引入SSH项目所需要的所有Jar包,分为四类:
1)Spring3的jar包
2)Hibernate4的jar包
3)Struts2的jar包
4)其他的jar包
2、我们以
Struts2.3.16、
Spring3.2.15、
Hibernate4.2.4
版本为例子进行整合

三、web.xml配置文件
1、web.xml配置文件是所有web应用最基本的配置文件,Spring框架Bean工厂的创建启动、Struts2框架的加载都在此配置

<!-- spring -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>classpath:applicationContext.xml</param-value>  
</context-param>
<!-- struts2 -->
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

针对spring需要一个监听器:
ContextLoaderListener监听器做一个spring框架的加载,生成spring的bean工厂,加载spring应用上下文的配置文件

针对struts2需要一个过滤器:
配置struts2的核心过滤器

四、Spring应用上下文配置文件
1、在SSH整合应用中,Spring应用上下文配置文件既是Spring框架IoC容器、AOP代理等的配置依据,又是与Hibernate等ORM工具集成管理的核心配置(包括dataSource、sessionFactory、TransactionManager等核心bean都在此注册),还是管理Struts2框架的Action等bean组件的配置所在,是名副其实的“bean工厂”配置
2、Spring对Hibernate的整合关键在于应用上下文配置文件中配置Hibernate Session工厂Bean
3、Hibernate原来的配置文件hibernate.cfg.xml已经融入Spring应用上下文配置文件,甚至hbm映射配置文件都由持久化领域类的注解所替代,hibernate框架的专有配置几乎消失

import javax.persistence.*
@Entity
@Table(name="myTwitter.users")
public class User {
@Id
private int id;
@Column
private String name;
@Column
private String password;
@Column
private String fullName;
}


4、Spring与Hibernate整合过程中需要解耦
1)以前Spring通过HibernateTemplate使用Hibernate,HibernateTemplate主要职责是管理Hibernate的Session,存在一定程序侵入性,与Spring API产生耦合
2)从Hibernate3开始引入了上下文Session(Contextual session),是Hibernate本身提供的保证每个事务使用同一Session的方案。该方式使DAO类不包含特定Spring代码
3)在Spring中,通过Spring的Hibernate Session工厂Bean来获取Hibernate的SessionFactory,在Spring上下文中配置Hibernate Session工厂Bean
4)Hibernate能够自己管理Session,不需要Spring的Hibernate模版,可以直接将Hibernate Session装配到DAO类中

五、struts.xml配置文件
1、struts2-spring-plugin-2.3.x.jar插件用于Struts2框架和Spring框架的整合
2、通常让Spring容器管理Struts2框架的控制器Action,为Action注入业务逻辑组件(如Service、DAO等组件实例)
3、一种做法:在struts.xml文件中配置该Action时,class属性不指向该Action实现类,而是Spring容器中该Action实例ID
4、另一种做法:Action在struts.xml中的配置依旧(class属性指向该Action实现类),使用注解方式让Spring容器管理Action的依赖注入、生命周期

<package name="SSHProject" extends="struts-default">
    <action name="register" class="com.iotek.action.UserAction">
        <result name="success">/WEB-INF/content/registerOK.jsp</result>
        <result name="input">/register.jsp</result>
    </action>
    <action name="*">
        <result>/WEB-INF/content/{1}.jsp</result>
    </action>
</package>
@Scope("prototype")
@Component("register")
public class UserAction extends ActionSupport {
    //省略相关字段
    private UserManager userManager;
    //省略相关字段的读写方法
    @Resource(name="userManager")
    public void setUserManager(UserManager userManager) {
        this.userManager = userManager;
    }
}

六、整合项目架构
1、表现层
  1)JSP页面
2、业务逻辑层
  1)domain包
  2)action包
  3)service包
3、数据访问层
  1)DAO包
4、架构原则
  1)通过接口耦合
  2)事务管理在业务逻辑层实施

猜你喜欢

转载自blog.csdn.net/csj50/article/details/85564924
今日推荐