package com.benx;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
public class PersonServiceImpl implements PersonService {
private PersonDao personDao;
/**
* Transactional事务回滚,默认情况是Check Exception 不回滚,unCheck Exception回滚
*
* RollbackFor or noRollbackFor 的异常有继承关系,比如RollbackFor配了RuntimeException回滚
* 那么出现 RuntimeException的子类都会回滚
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { AppBizExeA.class } , noRollbackFor = { AppBizExeB.class })
public void method1() throws Exception {
System.out.println("method1 start");
TPerson per = new TPerson();
per.setAge("24");
per.setId(123);
per.setName("xj");
personDao.add(per);
throw new NullPointerException();
}
@Override
@Transactional(propagation = Propagation.NESTED, rollbackFor = { AppBizExeA.class })
public void method2() throws Exception {
System.out.println("method2 start");
TPerson per = new TPerson();
per.setAge("24");
per.setId(1234);
per.setName("xj");
personDao.add(per);
System.out.println("method2 end");
}
public PersonDao getPersonDao() {
return personDao;
}
public void setPersonDao(PersonDao personDao) {
this.personDao = personDao;
}
}