zoukankan      html  css  js  c++  java
  • day35_Spring学习回顾_03

    1.1、事务管理
        基于xml配置的
            1.配置事务管理器
                jdbc:DataSourceTransactionManager
                hibernate:HibernateTransactionManager
                
                <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                    <property name="dataSource" ref="dataSource"></property>
                </bean>
                
            2.事务通知(详情、属性)
                <tx:advice id="txAdvice" transaction-manager="txManager">
                  <tx:attributes>
                     <tx:method name="add*"/>
                     <tx:method name="update*"/>
                     <tx:method name="delete*">
                     <tx:method name="find*" read-only="true"/>
                    </tx:attributes>
                </tx:advice>
    
            3. AOP编程,ABCD --> ABC
                <aop:config>
                  <aop:advisor advice-ref="txAdvice" pointcut="execution(* com..*.*(..))">
                </aop:config>   
        
        基于注解的
            xml 配置
            1.配置事务管理器
                <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                    <property name="dataSource" ref="dataSource"></property>
                </bean>
            2.将配置事务管理器交予spring管理
                <tx:annotation-driven transaction-manager="txManager" proxy-target-class="false"/>
            3.目标类上通过注解配置事务详情
                @Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.DEFAULT)
    
    1.2、整合Junit
        在测试类上
            // 让Junit去通知spring加载配置文件
            @RunWith(SpringJUnit4ClassRunner.class)
            @ContextConfiguration(locations="classpath:applicationContext.xml")
    
            // 让spring容器自动进行注入
            @Autowired
    
            @Test
    
    1.3、整合web
        web.xml 中的配置
            1.确定xml位置
                <context-param>
                    <param-name>contextConfigLocation</param-name>
                    <param-value>classpath:applicationContext.xml</param-value>
                </context-param>
            2.配置spring 监听器,用于加载xml配置文件
                <listener>
                    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                </listener>
    
    1.4、整合ssh
        1.hibernate po(domain/bean)
        2.dao 层:
            法一:需要HibernateTemplate,相当于session操作PO类 --> 必须提供setter方法,让spring进行注入 --> 所以xml中必须要配置模板
                save()    update()    delete()    saveOrUpdate()    find() 
            法二:继承HibernateDaoSupport,需要注入SessionFactory,底层自动创建模板
                dao方法中使用 this.getHibernateTemplate()
                
        3.service 层:spring配置
            <!-- 加载配置文件 JdbcInfo.properties
                "classpath:" 该前缀表示在src目录下
                在配置文件中通过  ${key} 获得配置文件 内容(值)
            -->
            <context:property-placeholder location="classpath:com/itheima/f_properties/jdbcInfo.properties"/>
    
            <!-- 创建数据源对象,c3p0,需要注入基本四项 -->
            <bean id="dataSourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <property name="driverClass" value="${jdbc.driverClass}"></property>
                <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
                <property name="user" value="${jdbc.user}"></property>
                <property name="password"  value="${jdbc.password}"></property>
            </bean>
            
            <!-- 配置 LocalSessionFactoryBean,获得SessionFactory -->
            <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="dataSource" ref="dataSource"></property>
                <property name="hibernateProperties">
                    <props>
                        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                        <prop key="hibernate.show_sql">true</prop>
                        <prop key="hibernate.format_sql">true</prop>
                        <prop key="hibernate.hbm2ddl.auto">update</prop>
                        <prop key="hibernate.current_session_context_class">thread</prop>
                    </props>
                </property>
                <property name="mappingLocations" value="classpath:com/itheima/domain/*.hbm.xml"></property>
            </bean>
            
            <!-- dao spring中删除模板,给dao注入SessionFactory -->
            <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl">
                <property name="sessionFactory" ref="sessionFactory"></property>
            </bean>
            
            <!-- 事务管理 HibernateTransactionManager,需要注入 SessionFactory -->
            <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
                <property name="sessionFactory" ref="sessionFactory"></property>
            </bean>
            <!-- 5.2 、事务详情 ,给ABC进行具体的事务设置 -->
            <tx:advice id="txAdvice" transaction-manager="txManager">
                <tx:attributes>
                    <tx:method name="register"/>
                </tx:attributes>
            </tx:advice>
            <!-- 5.3、AOP编程,从 ABCD 业务中 筛选出 ABC -->
            <aop:config>
                <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.itheima.service..*.*(..))"/>
            </aop:config>  
            
        4.web 层:aciton
            使用的是:由struts去创建action
            struts.xml 中的 <action name="" class="全限定类名"> 注意:我们看到的好像是struts去创建action,其实底层使用的是spring去创建action
            在Action类中,必须提供service名称与spring配置文件一致。(如果【名称】一致,将自动注入) 
  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9447934.html
Copyright © 2011-2022 走看看