<strong>
      
        
一共有6步(文章底部附有源码下载地址,刚学完ssh的可以借鉴)
      
      </strong>
1
      
         写一个Hibernate应用,完成用户的增加
    
      
      1
      
        ) User实体
    
      
      2
      
        )UserDao接口
        save(User u)
    
      
      3
      
        )UserDaoImpl实现UserDao
        save(User u){
            
      
      
        //
      
      
        用hibernate api
      
      
                }
        
      
      2
      
         让spring注入SessionFactory
    
      
      1
      
        )在上一个应用中导入Spring的jar包
        除了基础的6个包,还得导入2个jar包
        org.springframework.jdbc
      
      -3.0.5
      
        .RELEASE.jar
        org.springframework.orm
      
      -3.0.5
      
        .RELEASE.jar
        org.springframework.transaction
      
      -3.0.5
      
        .RELEASE.jar
        
        
    
      
      2
      
        ) 增加配置文件beans.xml
        
      
      <bean id="sessionFactory"
            
      
        class
      
      ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="configLocation"  value="classpath:hibernate.cfg.xml"/>
        </bean>
        
        
        <bean id="userDao" 
      
        class
      
      ="包名.UserDaoImpl">
            <property name="sessionFactory" ref="sessionFactory">
        </bean>
        
    3
      
        ) 在测试方法中,获得userDao,然后测试save()
    
            UserDao userDao
      
      = (UserDao)cxt.getBean("userDao"
      
        );
            
      
      3
      
         添加数据源,并注入到SessionFactory    
    
      
      1
      
        ) 需要导入2个包
            commons
      
      -
      
        dbcp.jar
            commons
      
      -
      
        pool.jar
    
        注:数据源的第3方实现有非常多,现我们用其中一种,commons
      
      -
      
        dbcp
    
    
      
      2
      
        ) 配置Datasource
    
      
      <bean id="myDataSource" 
      
        class
      
      ="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    
    3
      
        )在SessionFactory Bean中注入dataSource
    
    
      
      <bean id="mySessionFactory" 
      
        class
      
      ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 注入DataSource Bean-->
        <property name="dataSource" ref="myDataSource"/>
        
        <property name="mappingResources">
            <list>
                <value>com/toceansoft/entity/User.hbm.xml</value>
            </list>
        </property>
        
        <property name="hibernateProperties">
            <value>
      
        
                hibernate.dialect
      
      =
      
        org.hibernate.dialect.MySQLDialect
                hibernate.hbm2ddl.auto
      
      =
      
        update
                hibernate.show_sql
      
      =
      
        true
      
      
            </value>
        </property>
    </bean>
    
    4
      
        ) 测试结果
    
      
      4
      
         使用spring提供的HibernateTemplate
    
      
      1
      
        ) 在Dao中添加
    
      
      
        private
      
      
         HibernateTemplate hibernateTemplate;
    
      
      
        public
      
      
        void
      
      
         setSessionFactory(SessionFactory sessionFactory) {
        
      
      
        this
      
      .hibernateTemplate = 
      
        new
      
      
         HibernateTemplate(sessionFactory);
    }
    
    
      
      2
      
        )修改方法,改成使用hibernateTemplate
        save(o)
            hibernateTemplate.save(o);
            
      
      5
      
         使用spring在业务层切入事务
    
      
      1
      
        )在业务层写一个接口UserService
        
      
      
        public
      
      
        void
      
      
         add(User u);
    
      
      2
      
        ) 写一个实现类UserServiceImpl实现接口UserService
        
      
      
        public
      
      
        void
      
      
         add(User u){}
    
      
      3)实现类UserServiceImpl提供userDao的get/
      
        set方法
    
    
      
      4
      
        )在beans.xml中配置UserServiceImpl 的Bean,并注入userDao
    
    
      
      5
      
        )配置事务管理器Bean
    
      
      <bean id="txManager" 
      
        class
      
      ="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    6
      
        ) 配置事务通知
    
      
      <tx:advice id="txAdvice" transaction-manager="txManager">
        <!-- 包括隔离级别,事务传播属性。。。 -->
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>
    7
      
        )配置aop切面
    
      
      <aop:config>
        <aop:pointcut id="serviceMethods"
      
        
            expression
      
      ="execution(* com.toceansoft.service.impl.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>
    </aop:config>
    8
      
        )测试结果
    
      
      9
      
        )在add方法内抛出异常,再测试观察结果
        
      
      
        throw
      
      
        new
      
      
         RuntimeException();
        
      
      6
      
         整合Spring与Struts
    
      
      1
      
        )在把上面的java 应用变成web应用
            
      
      --
      
        把上面应用Src下的所有东东复制到web应用的src
            
    
      
      2
      
        )导入struts2开发的基础jar包,还需要一个特殊包
        struts
      
      -spring-
      
        plugin.jar
        
        导入与struts2整合的spring相应的包
        org.springframework.web.struts
      
      -3.0.5
      
        .RELEASE.jar
        org.springframework.web
      
      -3.0.5
      
        .RELEASE.jar
        
    
      
      3) 把beans.xml 复制到WEB-
      
        INF,并且改名为applicationContext.xml(可选的)
    
    
      
      4
      
        ) 在web.xml中配置spring启动的监听器
    
      
      <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml,classpath*:applicationContext2.xml</param-value>
    </context-param>
    <listener>
    <listener-
      
        class
      
      >org.springframework.web.context.ContextLoaderListener</listener-
      
        class
      
      >
    </listener>
    
    5
      
        )在web.xml配置Struts2的启动
    
      
      <filter>
        <filter-name>struts2</filter-name>
        <filter-
      
        class
      
      >org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-
      
        class
      
      >
        <!--  <filter-
      
        class
      
      >org.apache.struts2.dispatcher.FilterDispatcher</filter-
      
        class
      
      >-->
    </filter>
    
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>
      
        /*
      
      
        </url-pattern>
    </filter-mapping>
    
    6)在Web包下写UserAction,并且提供业务层UserSerivce的set方法
    
    7)在appplicationContext.xml中配置UserAction bean
    <bean id="userAction" class="com.toceansoft.web.action.UserAction" scope="prototype">
        <property name="userService" ref="userService" />
    </bean>
    注:scope="prototype"
    
    8) 在struts.xml中配置UserAction
    <!-- 跳转到添加产品页面 -->
        <action name="User_toAdd" >
            <result>/User_add.jsp</result>
        </action>
        
        <!-- 添加产品 -->
        <!-- 关键点:这里的class设置action bean在spring配置文件中bean的id -->
        <action name="User_add" class="userAction" method="add">
            <result name="success">/grobal_message.jsp</result>
        </action>
        
    9) 写2个页面
    User_add.jsp
    grobal_message.jsp
    
    10)部署测试