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配置文件一致。(如果【名称】一致,将自动注入) 
  • 相关阅读:
    Spring源码情操陶冶-AbstractApplicationContext#obtainFreshBeanFactory
    Spring源码情操陶冶-AbstractApplicationContext#prepareRefresh
    Spring源码情操陶冶-AbstractApplicationContext
    Spring源码情操陶冶-ContextLoader
    Spring源码情操陶冶-ContextLoaderListener
    Spring mybatis源码篇章-MapperScannerConfigurer
    Spring mybatis源码篇章-动态SQL节点源码深入
    Spring mybatis源码篇章-动态SQL基础语法以及原理
    Spring mybatis源码篇章-Mybatis的XML文件加载
    Spring mybatis源码篇章-Mybatis主文件加载
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9447934.html
Copyright © 2011-2022 走看看