信息 remove value cti end isolation void 方式 -c
声明式事务管理 基于注解
在配置文件中需要开启注解驱动<tx:annotation-driven transaction-manager="transactionManager"/>;在业务层类的加上@transactional注解
这种事务管理方式非常简单,但是注加载业务层类中,对于后期的维护没有给予AspectJ方式的事务管理简单。
dao层
- /**
- * @author AT
- * 转账dao层
- */
- public interface AccountDao {
- /**
- * 转出钱
- * @param outer
- * @param money
- */
- public void remove(String outer, Double money);
- /**
- * 转入钱
- * @param input
- * @param money
- */
- public void add(String input, Double money);
- }
dao层实现类
- /**
- * 转账dao层实现
- */
- public class AccountDaoimpl extends JdbcDaoSupport implements AccountDao {
- /**
- * 转出钱
- * @param outer
- * @param money
- */
- @Override public void remove(String outer, Double money) {
- String sql = "update account set money = money - ? where name = ?";
- this.getJdbcTemplate().update(sql, money, outer);
- }
- /**
- * 转入钱
- * @param input
- * @param money
- */
- @Override public void add(String input, Double money) {
- String sql = "update account set money = money + ? where name = ?";
- this.getJdbcTemplate().update(sql, money, input);
- }
- }
service业务层
- /**
- * @author AT
- * 转账业务接口
- */
- public interface AccountSevice {
- public void transfer(String input, String out, Double money); //消费
- }
service业务层实现类
- /**
- * @author AT
- * 编程式事务管理
- *
- * propagation 事务的传播行为
- * isolation 事务的隔离级别
- * readOnly 只读
- * rollbackFor 发生该异常回滚
- * noRollbackFor 发生该异常不回滚
- * noRollbackForClassName 发生指定异常不回滚
- */
- @Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT,readOnly=false)
- public class AccountServiceImpl implements AccountSevice {
- @Resource(name="accountDao")
- private AccountDao accountDao;
- @Override
- public void transfer(final String input, final String out,final Double money) {
- accountDao.remove(out, money);
- // int a = 1/0;
- accountDao.add(input, money);
- }
- public void setAccountDao(AccountDao accountDao) {
- this.accountDao = accountDao;
- }
- }
applicationContext.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: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.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd">
- <!-- 引入外部属性文件 -->
- <context:property-placeholder location="classpath:jdbc.properties"/>
- <!-- 配置C3P0连接池 -->
- <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- <property name="driverClass" value="${jdbc.driverClass}"/>
- <property name="jdbcUrl" value="${jdbc.url}"/>
- <property name="user" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- </bean>
- <!-- dao层和业务的类 -->
- <bean id="accountDao" class="com.sdf.spring03.AccountDaoimpl">
- <property name="dataSource" ref="datasource"></property>
- </bean>
- <bean id="accountService" class="com.sdf.spring03.AccountServiceImpl">
- <property name="accountDao" ref="accountDao"/>
- </bean>
- <!-- 配置事务管理器 -->
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="datasource"/>
- </bean>
- <!-- 开启注解事务 -->
- <tx:annotation-driven transaction-manager="transactionManager"/>
- </beans>
测试类
- /**
- * @author AT
- * 测试转账信息 声明式事务管理 基于注解的管理方式
- */
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration("classpath:applicationContext03.xml")
- public class AccountTest {
- @Resource(name="accountService")
- private AccountSevice accountService;
- @Test
- public void test01(){
- accountService.transfer("A", "B", 300d);
- }
- public void setAccountService(AccountSevice accountService) {
- this.accountService = accountService;
- }
- }
Spring事务管理5-----声明式事务管理(3)
信息 remove value cti end isolation void 方式 -c
原文:http://www.cnblogs.com/kuoAT/p/7804366.html
来源: http://www.bubuko.com/infodetail-2385968.html