Spring 事务处理 (4)

测试代码

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext4.xml") public class Test4 { @Autowired StudentService studentService; @Test public void test(){ studentService.transactionTest(); } }

你可能会觉得注解的方式比xml配置简单的多,但是考虑一下,当你的项目特别大,涉及的表很多的时候呢,你可能需要些很多很多的注解,假设后期需要修改某些属性,还得一个个改;

所以大项目建议采用XML,小项目使用注解也ok;

原理简述

声明式事务其底层用的还是AOP,你完全可以自己手动的配置每个环节,如目标,通知,切面,代理等,这能让你更清晰的理解每一行代码背后到底做了什么事情;

配置文件:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans "> <import resource="mybatis-beans.xml"/> <!-- 添加事务管理器--> <bean> <property ref="dataSource"/> </bean> <!-- 要进行事务增强的目标对象--> <bean/> <!-- 事务通知--> <bean> <property ref="transactionManager"/> <property> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!-- 代理对象--> <bean> <property ref="serviceTarget"/> <property> <list> <idref bean="transactionInterceptor"/> </list> </property> </bean> </beans>

测试代码:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext5.xml") public class Test5 { @Autowired @Qualifier("orderService") StudentService studentService; @Test public void test(){ Student student = studentService.getStudent(1); student.setAge(1); studentService.update(student); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzfgp.html