对自己要求要更严格一些,对别人要再多宽容一些。
Spring事务管理(声明方式)
上一篇 /
下一篇 2009-12-29 15:32:01
/ 个人分类:JAVA学习
Spring声明式事务管理主要有:TransactionProxyFactoryBean和BeanNameAutoProxyCreator方式。
1.transactionProxyFactoryBean方式的配置:
<!-- JDBC模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> <!-- 数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value> </property> <property name="username"> <value>anita</value> </property> <property name="password"> <value>123</value> </property> </bean> <!--事务模板 --> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager"> <ref local="transactionManager"/> </property> </bean> <!-- jdbc事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> <bean id="testDao" class="com.sini.testting.JdbcTemplateTest"> <property name="jdbcTemplate"> <ref local="jdbcTemplate"/> </property> </bean> <!-- 方式一:使用TransactionProxyFactoryBean代理 <bean id="testDaoProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref local="transactionManager"/> </property> <property name="target"> <ref local="testDao"/> </property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> </beans>
|
2.BeanNameAutoProxyCreator方式的配置文件
<!-- JDBC模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> <!-- 数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value> </property> <property name="username"> <value>anita</value> </property> <property name="password"> <value>123</value> </property> </bean> <!--事务模板 --> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager"> <ref local="transactionManager"/> </property> </bean> <!-- jdbc事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> <bean id="testDao" class="com.sini.testting.JdbcTemplateTest"> <property name="jdbcTemplate"> <ref local="jdbcTemplate"/> </property> </bean> <!-- 方式二:使用自动代理--> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref local="transactionManager"/> </property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <!-- 需要管理事务的bean,可以定义若干个 --> <value>testDao</value> </list> </property> <property name="interceptorNames"> <list> <!-- 事务通知,可以定义多个通知 <value>transactionIntercep</value> --> </list> </property> </bean> </beans> |
3.测试代码:
public class JdbcTemplateTest { /** * @param args */ public JdbcTemplate jdbcTemplate=null; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { //设置JDBC模板 this.jdbcTemplate=jdbcTemplate; } public void InsertUser() { jdbcTemplate.execute("insert into student values('500','200','200')"); //jdbcTemplate.execute("insert into student values('400','200','200')"); } public static void main(String[] args) { // TODO Auto-generated method stub //获取配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("/applicationContext.xml"); //实例化TransactionProxyFactoryBean代理,使用方式一 //JdbcTemplateTest test=(JdbcTemplateTest)ctx.getBean("testDaoProxy"); //实例化自动代理BeanNameAutoProxyCreator JdbcTemplateTest test=(JdbcTemplateTest)ctx.getBean("testDao"); //执行插入操作 test.InsertUser(); } } |
收藏
举报
TAG: