在@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)
我有控制器注释 @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)