编程式事务实现
plan1:
在配置类中:
注册 DataSourceTransactionManager,并添加属性dataSource。
注册 TransactionTemplate,并添加属性dataSource。
在service中:
声明 PlatformTransactionManager,在service类全局变量中。
new DefaultTransactionDefinition(),在service类的方法中。
调用 PlatformTransactionManager变量的getTransaction(),并传入DefaultTransactionDefinition的变量,获取到TransactionStatus事务状态对象。
业务完成,则调用PlatformTransactionManager变量的.commit()方法,并传入TransactionStatus事务状态对象。
业务失败,则捕获异常,调用PlatformTransactionManager变量的.rollback()方法,并传入TransactionStatus事务状态对象。
事务配置plan1完成
plan2:
在配置类中:
注册 DataSourceTransactionManager,并添加属性dataSource。
注册 TransactionTemplate,并添加属性dataSource。
在service中:
声明 TransactionTemplate,在service类全局变量中。
调用 TransactionTemplate变量的.execute(),并传入TransactionCallbackWithoutResult对象(匿名方法new出来),然后实现该对象的doInTransactionWithoutResult(TransactionStatus status) {}方法,方法里完成业务。
业务完成,无需操作。(自动使用TransactionCallbackWithoutResult类进行提交,也可以使用TransactionCallback类,获取业务的结果并手动提交)
业务失败,则捕获异常,调用TransactionStatus变量的setRollbackOnly()方法。
事务配置plan2完成
编程式事务由于代码入侵太严重了,因为在实际开发中使用的很少,我们在项目
中更多的是使用声明式事务。