springboot手动事务 工具
时间: 2023-08-23 19:06:18 浏览: 260
手写springboot
在Spring Boot中,可以使用编程方式实现手动事务管理。可以通过使用TransactionTemplate或者PlatformTransactionManager来手动控制事务的开始、提交和回滚。
使用TransactionTemplate的示例代码如下:
```java
@Autowired
private TransactionTemplate transactionTemplate;
public void doTransaction() {
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// 在这里执行需要在事务中进行的操作
// 可以调用其他的Service方法或者DAO方法
}
});
}
```
使用PlatformTransactionManager的示例代码如下:
```java
@Autowired
private PlatformTransactionManager transactionManager;
public void doTransaction() {
TransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
TransactionStatus transactionStatus = transactionManager.getTransaction(transactionDefinition);
try {
// 在这里执行需要在事务中进行的操作
// 可以调用其他的Service方法或者DAO方法
transactionManager.commit(transactionStatus);
} catch (Exception e) {
transactionManager.rollback(transactionStatus);
throw e;
}
}
```
需要注意的是,手动事务管理需要在方法上加上@Transactional注解是无效的,因为@Transactional注解是通过Spring的AOP来实现的,只能对被代理的方法起作用。而手动事务管理是直接在代码中进行事务的控制,不依赖于AOP。
引用\[1\]提供了一个关于Spring Boot自动事务和手动事务的简单示例,可以参考其中的项目结构、表结构、依赖和配置。引用\[2\]和引用\[3\]提供了关于@Transactional注解的一些注意事项,包括少使用@Transactional注解、小心事务失效的问题以及大事务问题的常见原因。
#### 引用[.reference_title]
- *1* [SpringBoot+mybatis自动事务和手动事务的简单demo](https://blog.csdn.net/Jack_Brandy/article/details/105390424)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [手动编写SpringBoot事务](https://blog.csdn.net/qq_44796093/article/details/126069577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文