Spring IOC 使用注解实现事务(声明式事务)

    xiaoxiao2025-01-30  5

    使用注解实现事务(声明式事务)

    使用@Transactional注解时,可以通过参数配置事务详情

    参数名称描述value用于指定需要使用的事务管理器,默认为“",其别名为transactionManagertransactionManager指定事务的限定符值,可用于确定目标事务管理器,匹配特定的限定值(或者Bean的name值),默认为"",其别名为value。isolation用于指定事务的隔离级别,默认为Isolation.DEFAULT (即底层事务的隔离级别)。noRollbackFor用于指定遇到特定异常时强制不回滚事务。noRollbackForClassName用于指定遇到特定的多个异常时强制不回滚事务。其属性值可以指定多个异常类名。propagation用于指定事务的传播行为,默认为Propagation REQUIRED。read-only用于指定事务是否只读,默认为falserollbackFor用于指定遇到特定异常时强制回滚事务。rollbackForClassNamee用于指定遇到特定的多个异常时强制回滚事务。其属性值可以指定多个异常类名。timeout用于指定事务的超时时长,默认为TransactionDefinition.TIMEOUT_DEFAULT (即底层事务系统的默认时间)。

    程序示例

    通过事务 使以下方法 要么全成功 要么全失败 public void add Student() { //增加班级 //增加学生 }

    引入jar包

    spring-tx-4.3.9.RELEASE.jarojdbc.jarcommons-dbcp.jar 连接池使用到数据源commons-pool.jar 连接池spring-jdbc-4.3.9.RELEASE.jaraopalliance.jar

    增加配置

    增加事务tx的命名空间 xmlns:tx=“http://www.springframework.org/schema/tx” //applocationContext.xml <!-- 增加对事务的支持 (添加事务管理器) --> <tx:annotation-driven transaction-manager="txManager"/> <!-- 配置事务管理器 txManager --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 配置数据库相关 (数据源)--> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property> <property name="url" value="127.0.0.1:1521:ORCL"></property> <property name="username" value="scott"></property> <property name="password" value="tiger"></property> <property name="maxActive" value="10"></property><!-- 最大活动时间 --> <property name="maxIdle" value="6"></property><!-- 最大空闲时间 --> </bean>
    使用
    如果将注解添加在Bean类上,则表示事务的设置对整个 Bean类的所有方法都起作用;如果将注解添加在Bean类中的某 个方法上,则表示事务的设置只对该方法有效。 将需要成为事务的方法 前增加注解: @Transactional(readOnly=false,propagation=Propagation.REQUIRED)

    最新回复(0)