23.下面有关Spring的事务传播特性,说法错误的是() ☆ 【单选】 A. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行 B. PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常 C. PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起 D. PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行,如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作
时间: 2023-06-12 15:03:54 浏览: 178
B. PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常 是错误的说法。PROPAGATION_REQUIRED表示支持当前事务,如果当前没有事务,就新建一个事务。如果被调用方存在事务,则加入该事务中,否则新建一个事务。如果该事务被外层事务包裹,则被外层事务控制提交或回滚。
相关问题
. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
PROPAGATION_SUPPORTS 是 Spring 事务传播行为中的一种。它的含义是:如果当前存在事务,则加入该事务,如果当前不存在事务,则以非事务方式执行。
具体来说,如果一个方法使用 PROPAGATION_SUPPORTS 传播行为进行事务控制,那么当该方法被另一个使用事务的方法调用时,它会加入到该事务中执行;当该方法被非事务方法调用时,它会以非事务方式执行。
PROPAGATION_SUPPORTS 传播行为通常用于读取操作,因为读取操作不需要对数据库进行修改,不需要使用事务来保证数据的一致性和完整性。通过使用 PROPAGATION_SUPPORTS 传播行为,可以在当前存在事务时加入到该事务中执行,从而保证数据的一致性和完整性;在当前不存在事务时,可以以非事务方式执行,提高读取操作的执行性能。
需要注意的是,在使用 PROPAGATION_SUPPORTS 传播行为时,不会抛出事务异常,因为它不会开启新的事务,也不会回滚事务。
spring事务 的传播行为PROPAGATION_SUPPORTS:,及其代码示例
PROPAGATION_SUPPORTS是Spring事务传播行为的一种,表示当前方法不需要事务,但是如果存在当前事务,则会加入到当前事务中进行执行。
下面是一个示例代码:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
@Transactional(propagation=Propagation.SUPPORTS)
public User getUserById(Integer userId) {
return userMapper.selectByPrimaryKey(userId);
}
}
```
在上面的示例中,getUserById()方法使用了@Transactional注解,并且指定了propagation=Propagation.SUPPORTS参数,这表示当前方法不需要事务,但是如果存在当前事务,则会加入到当前事务中进行执行。当方法执行时,如果当前没有事务,则该方法会以非事务方式执行;如果当前存在事务,则该方法会加入到当前事务中进行执行。
阅读全文