spring使用声明式事务管理之注解方式配置事务管理

使用注解方式配置事务管理只要在所有service层类前面加上@Transactional注解和在beans.xml中加入下面这句话

<!-- 开启事务控制的注解支持 -->

<tx:annotation-driven transaction-manager="transactionManager"/>

beans.xml文件

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!-- jdbc事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean>

<!-- 开启事务控制的注解支持 -->

<tx:annotation-driven transaction-manager="transactionManager"/>

<context:property-placeholder location="jdbc.properties"/> <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSource"></constructor-arg> </bean> <bean id="bankDao" class="com.java1234.dao.impl.BankDaoImpl"> <property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"></property> </bean> <bean id="bankService" class="com.java1234.service.impl.BankServiceImpl"> <property name="bankDao" ref="bankDao"></property> </bean> </beans>

在service层加上@Transactional注解的实例如下:

package com.java1234.service.impl;

import com.java1234.dao.BankDao; import com.java1234.service.BankService;

@Transactional public class BankServiceImpl implements BankService{

private BankDao bankDao; public void setBankDao(BankDao bankDao) { this.bankDao = bankDao; }

@Override public void transferAccounts(int count, int userIdA, int userIdB) { // TODO Auto-generated method stub // TODO Auto-generated method stub bankDao.outMoney(count, userIdA); bankDao.inMoney(count, userIdB); }

}

经验分享 程序员 微信小程序 职场和发展