zoukankan      html  css  js  c++  java
  • ssh三大框架整合

    一.ssh整合理论

      1.ssh整合其实是把hibernate和struts2的依赖对象交给spring来创建和维护

      2.struts2的Action创建由spring来创建

      3.hibernate的sessionFactor以及session的获得,aop事务等由spring来管理

    二.导包

      1.hibernate(3类包):

        (1)hibernate/libs/required下的所有jar

        (2)hibernate/libs/jpa的一个jpa包,java持久化规范(接口)包

        (3)mysql驱动包

      2.struts2(2类包):

        (1)struts2/apps/blank.war里的lib下所有Jar(注意的是:有一个javasist包跟hibernage提供的jar冲突了,删除低版本的那个)

        (2)struts2的libs下的struts-spring插件包(导入该包后,一旦struts启动就会去找spring的配置文件,如果找不到会抛出异常)

      3.spring(6类包):

        (1)基本核心包4+2:spring-beans,spring-context,spring-core,spring-expression4个,logging+log4j(这个较新版本可以不用)2个包

        (2)整合web 1个:spring-web包

        (3)整合aop 4个:spring-aop,spring-aspect的2个spring提供,aop联盟包和weaver包的2个第三方提供

        (4)整合jdbc 4个:spring-jdbc,spring-tx,spring-orm(spring整合Hibernate所需),c3p0 4个包

        (5)整合junit 1个:spring-test

        (6)标签库包2个(如果是my-eclipse则不用):jstl和standard包

    三.单独整合spring到web项目

      1.创建配置文件,导入4个约束:beans,context,aop,tx

      2.配置web.xml,让容器随项目启动而启动

    四.单独整合struts2到web项目

      1.创建配置文件,导入约束

      2.配置web.xml核心过滤器

    五.整合spring与struts2

      1.配置常量,在default.properties有两个常量,如图:

     

         (1)struts.objectFactory = spring:如果打开了该常量,则struts的对象创建交给spring来负责,包括属性的装配

        (2)struts.objectFactory.spring.autoWire = name:如果上面的常量打开了,这个打不打开都无所谓;该常量表示spring自动装配action中的属性,得保证action的属性名和beanName得一样才能完成自动装配

      2.整合方案

        (1)整合方案1:struts.xml的action元素的class属性的完整类名不变,还是由struts来创建Action对象,但spring来自动装配Action对象依赖的属性(不推荐)

        (2)整合方案2:struts.xml的action元素的class属性值变成applicationContext.xml的action的beanName,由spring全权管理和维护,但action对象的依赖属性须在bean元素内手动配置<property>;且action类对应的bean的scope的值必须为prototype

     

    六.单独整合hibernate

      1.书写实体类和orm元数据,完成实体类和表之间的映射关系

      2.书写主配置,包括必选配置,可选配置,引入orm元数据配置

        (1)书写主配置特别注意的是有一些已经归spring管理和维护的配置就不要在配了,比如session与当前线程绑定(session相关的配置),隔离级别的指定等,如图:

    七.整合spring和hibernate

      1.在spring中配置sessionFactory,该对象由spring来创建和管理;注意的是该sessionFactory类是localsessionFactoryBean,由spring提供的,封装了Hibernate的sessionFactory对象;记得选的时候得对应好自己hibernate的版本

      2.指定加载配置文件;hibernate时创建sessionFactory时得先加载配置文件信息,所以我们的sessionFactory是得依赖配置信息的

        (1)加载配置方案1:读取hibernate.cfg.xml的配置信息

        (2)加载配置方案2(推荐使用):把hibernate的主配置信息挪动spring中,读取spring中hibernate的配置信息,如图:

     

       3.引入c3p0连接池

        >spring加入hibernate的四大参数配置,hibernate直接创建连接来操作数据库。现在我们想让hibernate通过连接池来获取连接

        (1).创建四大参数的配置文件

        (2).在spring配置文件配置读取properties,如图:

         (3).配置c3p0连接池,如图:

     

         (4).为sessionFactory注入连接池,即可以通过连接池获取连接创建session来操作数据库,如图:

     

         (5)删除掉在spring中配置的四大参数信息

      4.HibernateTemplate操作数据库

        (1)在学习spring整合jdbc时,有一个jdbcTemplate来操作数据库;spring根据不同的技术进行封装并提供了不同的模板,整合hibernate提供了HibernateTemplate对象,其底层还是封装了session代码来操作数据库,不过该对象得依赖sessionFactory来获取session;

        (2)dao层可以通过继承HibernateDaoSupport来获取到HibernateTemplate对象,省了在spring配置,只需要把sessionFactory注入给HibernateDaoSupport即可

        (3)用HibernateTemplate查询数据库,如图:

     

     

    八.整合aop事务

      在spring操作事务一定得有核心事务管理器,spring为不同的平台提供不同的事务管理器,为hibernate技术封装了HibernateTransactionManager;

      1.spring配置核心事务管理器,底层封装了session代码,得依赖session工厂来获取,如图

     

       2.xml配置aop事务

        (1)配置通知,如图:

     

        (2)配置目标对象,如图:

        (3)配置将通知织入到目标对象,如图:

      3.注解配置aop事务

        1.spring配置文件开启注解配置事务,如图:

         2.在方法或类上加事务注解,如图:

     

    九.扩大session的范围

      1.学习hibernate懒加载时,生成的代理对象得保证它能在session的环境下使用,所以在这里也得扩大session的作用范围

      2.spring已经提供了一个过滤器用于扩大session的范围,所以在web.xml配下就可以了,如图:

     

       3.得注意的是:任何过滤器都建议放在struts核心过滤器的前面,因为到核心过滤器判断需要struts2来处理请求,则后面的过滤器执行不到了

  • 相关阅读:
    面向接口程序设计思想实践
    Block Chain Learning Notes
    ECMAScript 6.0
    Etcd Learning Notes
    Travis CI Build Continuous Integration
    Markdown Learning Notes
    SPRING MICROSERVICES IN ACTION
    Java Interview Questions Summary
    Node.js Learning Notes
    Apache Thrift Learning Notes
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/12795516.html
Copyright © 2011-2022 走看看