Spring学习 -TransactionProxyFactoryBean事务

applicationContext.xml

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/asl_daily_report" />
<property name="user" value="root" />
<property name="password" value="" />
<property name="maxPoolSize" value="40"/>
<property name="minPoolSize" value="1"/>
<property name="initialPoolSize" value="1"/>
<property name="maxIdleTime" value="20"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="newsDao" class="org.crazyit.app.dao.impl.NewsDaoImpl">
<property name="ds" ref="dataSource"/>
</bean>
<bean id="newsDaoTrans" class= "org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="target" ref="newsDao"/>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-DataAccessException</prop>
</props>
</property>
</bean>



NewsDao.java

package org.crazyit.app.dao;
import org.springframework.dao.DataAccessException;
public interface NewsDao {
public void insert(String title, String content) throws DataAccessException;
}



NewsDaoImpl.java

package org.crazyit.app.dao.impl;
import javax.sql.DataSource;
import org.crazyit.app.dao.NewsDao;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
public class NewsDaoImpl implements NewsDao {
private DataSource ds;
public void setDs(DataSource ds) {
this.ds = ds;
}
public void insert(String title, String content) throws DataAccessException {
JdbcTemplate jt = new JdbcTemplate(ds);
jt.update("insert into news_inf values(null , ? , ?)", title, content);
jt.update("insert into news_inf values(null , ? , ?)", title, content);
}
}



测试代码:

ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml");
NewsDao dao = (NewsDao) ctx.getBean("newsDaoTrans", NewsDao.class);
try {
dao.insert("Java", "Spring2 Of J2EE");
} catch (Exception e) {
System.out.println(e.getClass().getSimpleName());
}


输入出:DuplicateKeyException
同时事务没有提交,而是回滚。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值