在@Transactional 控制器中创建子事务

Creating sub transactions inside @Transactional controller

我有控制器注释 @Transactional。比有几个处理请求的服务。我需要的是根据这些服务中的处理逻辑将该事务拆分为一些子事务。

如果我也注释其中一些服务 @Transactional,我想它不会按预期工作。

如何注释服务 class 以创建子交易?

@RestController
@RequestMapping("/something")
@Transactional
public class SomeController {

    @Autowired
    private SomeService someService;

    @PostMapping("/endpoint")
    public void someEndpoint(@PathVariable final String id) {
        // do some work with service
    }
}

@Service
@Transactional(???)
public class SomeService {
    // some sub-transactional logic...
}

如果这些服务需要一个独立的事务,只需用

注释它们
@Transactional(propagation = Propagation.REQUIRES_NEW)