首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring学习 -TransactionProxyFactoryBean事宜

2012-07-04 
Spring学习 -TransactionProxyFactoryBean事务applicationContext.xmlbean iddataSource valuecom.m

Spring学习 -TransactionProxyFactoryBean事务
applicationContext.xml

<bean id="dataSource" 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"  ref="dataSource"/></bean><bean id="newsDao" 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
同时事务没有提交,而是回滚。

热点排行