/**
* 情况一 父子方法有事务 异常在子方法 父子方法回滚
*/publicclassA{
@Autowired
privateB b;
@Transactional
public Long addBook(Book book){
Long result = b.add(book);return result;}}publicclassB{
@Transactional
public Long add(Book book){
Long result = bookDao.addBook(book);
int i =1/0;return result;}}/**
* 情况二 子方法有事务父方法无事务 异常在子方法 子方法回滚父方法不回滚
*/publicclassA{
@Autowired
privateB b;
@Override
public Long addBook(Book book){
Long result = b.add(book);return result;}}publicclassB{
@Transactional
public Long add(Book book){
Long result = bookDao.addBook(book);
int i =1/0;return result;}}
同一个类
/*
* 情况一:都有事务注解,异常在子方法出现,事务生效
*/
@Transactional
public Long addBook(Book book){
Long result =add(book);return result;}
@Transactional
public Long add(Book book){
Long result = bookDao.addBook(book);
int i =1/0;return result;}/*
* 情况二:都有事务注解,异常在主方法出现,事务生效
*/
@Override
@Transactional
public Long addBook(Book book){
Long result =add(book);
int i =1/0;return result;}
@Transactional
public Long add(Book book){
Long result = bookDao.addBook(book);return result;}/*
* 情况三:只有主方法有事务注解,异常在子方法出现,事务生效
*/
@Override
@Transactional
public Long addBook(Book book){
Long result =add(book);return result;}public Long add(Book book){
Long result = bookDao.addBook(book);
int i =1/0;return result;}/*
* 情况四:只有主方法有事务注解,异常在主方法出现,事务生效
*/
@Override
@Transactional
public Long addBook(Book book){
Long result =add(book);
int i =1/0;return result;}public Long add(Book book){
Long result = bookDao.addBook(book);return result;}/*
* 情况五:只有子方法有事务注解,异常在子方法出现,事务不生效
*/
@Override
public Long addBook(Book book){
Long result =add(book);return result;}
@Transactional
public Long add(Book book){
Long result = bookDao.addBook(book);
int i =1/0;return result;}