Spring学习历程---基于AOP XML事务管理

37 篇文章 0 订阅
29 篇文章 2 订阅

1.导包


2.建好数据库spring,建表account


AccountDao.java

package cn.wanhao;

public interface AccountDao {

	public void out(String outUser,int money);
	public void in(String inUser,int money);
}
AccountDaoImpl.java
package cn.wanhao;

import org.springframework.jdbc.core.JdbcTemplate;

public class AccountDaoImpl implements AccountDao {

	private JdbcTemplate jtemplate;
	
	public void setJtemplate(JdbcTemplate jtemplate) {
		this.jtemplate = jtemplate;
	}

	@Override
	public void out(String outUser, int money) {
		String sql="update account  set money=money-?  where name=?";
		jtemplate.update(sql,new Object[]{money,outUser});
	}

	@Override
	public void in(String inUser, int money) {
		String sql="update account  set money=money+?  where name=?";
		jtemplate.update(sql,new Object[]{money,inUser});		
	}

}
AccountService.java
package cn.wanhao;

public interface AccountService {
	public void transfer(String outUser,String inUser,int money);
}
AccountServiceImpl.java
package cn.wanhao;

public class AccountServiceImpl implements AccountService {
		private AccountDao account;

		public void setAccount(AccountDao account) {
			this.account = account;
		}
		public void transfer(String outUser,String inUser,int money){
			account.out(outUser, money);
			int i=1/0;
			account.in(inUser, money);
		}
}
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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="dataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://localhost/spring"></property>
		<property name="username" value="root"></property>
		<property name="password" value="fpy/.123698741"></property>
	</bean>
	
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

	<bean id="accountDao" class="cn.wanhao.AccountDaoImpl">
		<property name="jtemplate" ref="jdbcTemplate"></property>
	</bean>
	
	<bean id="accountService" class="cn.wanhao.AccountServiceImpl">
		<property name="account" ref="accountDao"></property>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<bean id="accountServiceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager" ref="transactionManager"></property>
		<property name="target" ref="accountService" ></property>
		<property name="proxyInterfaces" value="cn.wanhao.AccountService"></property>
		<property name="transactionAttributes">
			<props>
				<prop key="*">PROPAGATION_REQUIRED,ISOLATION_REPEATABLE_READ</prop> 
			</props>
		</property>	
		
	</bean>
	
</beans>
由于先失去一千,然后抛出异常,若是事务配置成功,则回滚,数据不变,若是注释掉int i=1/0 , 则事务执行成功,即转账成功。



propapation的属性值总结如下:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值