project/spring/spring源码解读/事务手动回滚.md

879 B

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private DataSourceTransactionManager transactionManager;
    @Override
    @Transactional
    public void save(User user) {
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
        // explicitly setting the transaction name is something that can only be done programmatically
        def.setName("SomeTxName");
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

        TransactionStatus status = transactionManager.getTransaction(def);
        try {
            // execute your business logic here
            //db operation
        } catch (Exception ex) {
            transactionManager.rollback(status);
            throw ex;
        }
    }
}