@Transactional注解参数
时间: 2023-06-28 19:15:38 浏览: 98
@Transactional 注解是 Spring 框架提供的事务管理注解,用于标记需要在事务管理下执行的方法。它可以用在方法级别或者类级别上。
@Transactional 注解可以接受以下参数:
- propagation:事务传播行为,默认值为 REQUIRED。
- isolation:事务隔离级别,默认值为 DEFAULT。
- timeout:事务超时时间,默认值为 -1。
- readOnly:是否为只读事务,默认值为 false。
- rollbackFor:指定需要回滚的异常类型,多个异常类型可以用逗号隔开。
- noRollbackFor:指定不需要回滚的异常类型,多个异常类型可以用逗号隔开。
例如,下面的代码表示在方法执行过程中需要使用事务,并且事务传播行为为 REQUIRED:
```java
@Transactional(propagation = Propagation.REQUIRED)
public void doSomething() {
// ...
}
```
需要注意的是,使用 @Transactional 注解时需要在 Spring 配置文件中配置事务管理器,否则注解不会生效。
相关问题
@transactional注解的参数
回答: @Transactional 注解的参数包括 propagation 和 rollbackFor。其中,propagation用于设置事务的传播行为,而rollbackFor用于设置需要回滚的异常类型。@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上,但仅仅 @Transactional 注解的出现不足于开启事务行为,它仅仅是一种元数据,能够被可以识别 @Transactional 注解和适当配置的具有事务行为的beans所使用。需要注意的是,@Transactional 注解应该只被应用到 public 可见度的方法上,如果在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错,但是被注解的方法将不会展示已配置的事务设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [【事务】@Transactional 注解参数详解](https://blog.csdn.net/u011397981/article/details/130954236)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [Spring声明式事务@Transactional 注解参数详解](https://blog.csdn.net/qq_42239765/article/details/102680351)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
java @transactional注解的参数如何使用
`@Transactional`注解是用于标记一个方法需要进行事务管理。它可以应用于类、接口、方法以及方法参数等级别。
`@Transactional`注解有以下几个常用参数:
1. `propagation`:事务的传播行为,默认为`Propagation.REQUIRED`,即如果当前已经存在一个事务,则加入该事务,否则新建一个事务执行。
2. `isolation`:事务的隔离级别,默认为`Isolation.DEFAULT`,即使用数据库默认的隔离级别。
3. `readOnly`:是否只读事务,默认为`false`,即可读可写事务。
4. `timeout`:事务的超时时间,默认为`-1`,即使用数据库默认的超时时间。
5. `rollbackFor`:哪些异常需要回滚事务,默认为`RuntimeException`和`Error`。
6. `noRollbackFor`:哪些异常不需要回滚事务,默认为空,即所有异常都需要回滚事务。
例如,以下是一个使用`@Transactional`注解的示例:
```
@Transactional(propagation = Propagation.REQUIRED,
isolation = Isolation.DEFAULT,
readOnly = false,
timeout = -1,
rollbackFor = Exception.class,
noRollbackFor = ArithmeticException.class)
public void doSomething() {
// 这里写需要进行事务管理的代码
}
```
在上面的示例中,我们定义了一个`doSomething()`方法,并使用`@Transactional`注解标记该方法需要进行事务管理。其中,我们指定了事务的传播行为为`Propagation.REQUIRED`,隔离级别为默认级别,事务为可读可写,超时时间为默认时间,需要回滚`Exception`类的异常,不需要回滚`ArithmeticException`类的异常。
阅读全文