ssm框架整合spring事务管理
1.在applicationContext.xml中设置哪些service方法需要事务管理
2.通知设置 增删改查业务方法具体对应的事务
同时成功或者同时失败
例如,在添加数据时,第二条数据插入失败,那么其它的数据都插入失败
- applicationContext.xml
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="*" isolation="DEFAULT"/>
</tx:attributes>
</tx:advice>
<!--配置AOP增强-->
<aop:config>
<aop:pointcut id="service" expression="execution(* com.dsf.service.impl.*ServiceImpl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="service"/>
</aop:config>
- 在业务层多添加一个方法
@Override
public void savePersons(List<Person> persons) {
System.out.println("执行批量保存");
for (int i=0;i<persons.size();i++){
if(i==2){
//System.out.println(1/0);
}
/*当i=2时,未添加事务管理时,0和1这两条数据存入mysql
当添加了事务管理时,只要0、1、2当中有一条数据失败时,全部数据插入失败
*/
personDao.save(persons.get(i));
}
}
- 编写测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestAdvice {
@Autowired
IPersonService personService;
@Test
public void test03(){
List<Person> personList=new ArrayList<>();
personList.add(new Person("wade",230.3));
personList.add(new Person("kobe",520.3));
personList.add(new Person("aolier",888.8));
personService.savePersons(personList);
}
}