标签:控制 事务 czy Spring dao source transactionTemplate import public
事务控制模板类
通过实现接口:TransactionCallback
该模板类也需要在bean中配置TranscationManger。
样例
bean.xml
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--配置事务模板对象-->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager"></property>
</bean>
<bean id="accountService" class="com.czy.service.impl.AccountServiceImpl">
<property name="dao" ref="accountDao"></property>
<property name="transactionTemplate" ref="transactionTemplate"></property>
</bean>
service
package com.czy.service.impl;
import com.czy.dao.AccountDao;
import com.czy.domain.Account;
import com.czy.service.AccountService;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
public class AccountServiceImpl implements AccountService {
private AccountDao dao;
private TransactionTemplate transactionTemplate;
public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
this.transactionTemplate = transactionTemplate;
}
public void setDao(AccountDao dao) {
this.dao = dao;
}
public Account findAccountById(Integer accountId) {
return dao.findAccountById(accountId);
}
public void transfer(String sourceName, String targetName, Float money) {
transactionTemplate.execute(new TransactionCallback<Object>() {
@Override
public Object doInTransaction(TransactionStatus transactionStatus) {
Account source = dao.findAccountByName(sourceName);
Account target = dao.findAccountByName(targetName);
source.setMoney(source.getMoney() - money);
dao.updateAccount(source);
int i = 1/0;
target.setMoney(target.getMoney() + money);
dao.updateAccount(target);
return null;
}
});
}
}
标签:控制,事务,czy,Spring,dao,source,transactionTemplate,import,public 来源: https://www.cnblogs.com/czy-algorithm/p/16188754.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。