PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource);
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute((TransactionStatus status) -> {
try {
service1.doOperation();
service2.doOperation();
service3.doOperation();
TransactionAspectSupport.currentTransactionStatus().flush();
TransactionAspectSupport.currentTransactionStatus().commit();
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
throw e;
}
});