トランザクションを手動で管理する(SpringのTransactionTemplateトランザクションテンプレートを使用)
1.サービスはTransactionTemplateを取得する必要があり
ます2.Spring構成テンプレートをサービスに注入します
3.テンプレートをトランザクションマネージャーに注入する必要があります
4.トランザクションマネージャーを構成します
AccountServiceImplの転送方法を変更します
//需要spring注入模板
private TransactionTemplate transactionTemplate;
public void setTransactionTemplate( TransactionTemplate transactionTemplate)
{
this.transactionTemplate=transactionTemplate;}
public void transfer(final String outer,final String inner,final Intrger money){
transactionTemplate.execute(new TransactionCallbackwithoutResult(){
protected void doInTransactionWithoutResult(TransactionStatus arg0){
accountDao.out(outer,money);
int i=1/0;//断电
accountDao.in(inner,money);
}
}
);//executex新的函数
}
.xml構成
①DataSource的配置<bean><proprrty></proprrty></bean>
②继承了JdbcDaoSupport的Dao的数据注入方法
<bean id="accountDao" class="~~.AccountDaoImpl"><proprrty name="dataSource" ref="dataSource"></proprrty></bean>
③之前修改的Service(事务处理类)
<bean id="accountService" class="~~.AccountServiceImpl">
<proprrty name="accountDao" ref="accountDao"></proprrty>
<proprrty name="transactionTemplate" ref="transactionTemplate"></proprrty>
</bean>
④
<bean id="transactionTemplate" class="~~.transactionTemplate">
<proprrty name="transactionManager" ref="txManager"></proprrty>
</bean>
⑤
<bean id="txManager" class="~~.DataSourceTransactionManager">
<proprrty name="dataSource" ref="dataSource"></proprrty>
</bean>