zoukankan      html  css  js  c++  java
  • 8 -- 深入使用Spring -- 6...3 使用@Transactional

          8.6.3 使用@Transactional

            Spring还允许将事务配置放在Java类中定义,这需要借助于@Transactional注解,该注解即可用于修饰Spring Bean类,也可用于修饰Bean类中的某个方法。

            如果使用@Transaction修饰Bean类,则表明这些事务设置对整个Bean类起作用;若果使用@Transactional修饰Bean类的某个方法,则表明这些事务设置只对该方法有效。

            使用@Transactional时可指定如下属性:

            ⊙ isolation : 用于指定事务的隔离级别。默认为底层事务的隔离级别。

            ⊙ noRollbackFor : 指定遇到特定异常时强制不会滚事务。

            ⊙ noRollbackForClassName : 指定遇到特定的多个异常时强制不会滚事务。该属性值可以指定多个异常类名。

            ⊙ propagation : 指定事务传播行为。

            ⊙ readOnly : 指定事务是否只读。

            ⊙ rollbackFor : 指定遇到特定异常时强制回滚事务。

            ⊙ rollbackForClassName : 指定遇到特定的多个异常时强制回滚事务。该属性值可以指定多个异常类名。

            ⊙ timeout : 指定事务的超时时长。

    package edu.pri.lime._8_6_3.dao;
    
    import org.springframework.transaction.annotation.Isolation;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;
    
    public class NewsDaoImpl implements NewsDao {
    
        @Override
        @Transactional(propagation=Propagation.REQUIRED,isolation = Isolation.DEFAULT,timeout=5)
        public void insert(String title, String content) {
            
        }
    
    }

            还需要让Spring根据注解来配置事务代理,所以还需要在Spring配置文件中增加如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Spring 配置文件的根元素,使用Spring-beans-4.0.xsd语义约束 -->
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    
    
        <!-- 扫描Spring的组件 -->
        <context:component-scan base-package="edu.pri.lime._8_6_2.dao"/>
        
        <!-- 定义数据源Bean,使用C3P0数据源实现,并注入数据源的必要信息 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
            <property name="driverClass" value="com.mysql.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql://localhost/spring"/>
            <property name="user" value="root"/>
            <property name="password" value="System"/>
            <property name="maxPoolSize" value="40"/>
            <property name="minPoolSize" value="2"/>
            <property name="initialPoolSize" value="2"/>
            <property name="maxIdleTime" value="30"/>
        </bean>
        
        <!-- 配置JDBC数据源的局部事务管理器,使用DataSourceTransactionManager类 -->
        <!-- 该类实现了PlatformTransactionManager接口,是针对采用数据源连接的特定实现 -->
        <!-- 配置DataSourceTransactionmanager时需要依赖注入DataSource的引用 -->
        <bean id="transactionManager" class="org.spring.framework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <!-- 根据Annotation来生成事务代理 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>    
    </beans>

    啦啦啦

    啦啦啦

  • 相关阅读:
    【翻译】为了3D游戏粉丝的[(超级)街头霸王4]图形讲座(后篇)
    【翻译】【西川善司】GPU和Shader技术的基础知识 (一共有99回,翻译中)
    Shader Compilation for Multiple Platforms
    【翻译】西川善司为3D游戏粉丝的[索尼克世界大冒险]的图形讲座 3D游戏图形趋势是实时的全局照明
    【翻译】CAPCOM的[MT Framework 2.0]图形讲座
    【翻译】创造让人敬畏的未来SQUARE ENIX的次世代游戏引擎[Luminous Studio]
    业务逻辑层的Helper基类
    漫谈.Net中对象相等
    对微软Web Deploy的一次艰难调试
    在Asp.Net中缓存Ado.Net Entity
  • 原文地址:https://www.cnblogs.com/ClassNotFoundException/p/6629377.html
Copyright © 2011-2022 走看看