【发布时间】:2021-04-22 22:56:13
【问题描述】:
我的 Spring Boot 应用程序提供了以下 REST 控制器,它调用 Service 的两个方法。其中一种方法带有@Async 注释,因此它应该异步运行。
主应用程序类用@EnableAsync注解。
我观察到的问题是:基本上执行的是异步方法。我可以在生产系统中看到相应的日志条目。但似乎有时异步方法没有被调用。数据库中有文件 ID 没有出现在日志中。
您知道什么时候会发生这种行为吗?
REST 控制器
@PostMapping(consumes = MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Void> uploadDocument(@RequestParam("file") MultipartFile multipartFile) {
long fileId = fileService.save(multipartFile);
file.generateThumbnail(fileId);
return ResponseEntity.ok().build();
}
文件服务
@Transactional
public long save(MultipartFile multipartFile) {
// saves the file...
return fileId;
}
@Async
@Transactional
public void generateThumbnail(long fileId) {
// generate thumbnail
log.info("Starting thumbnail generation for fileId {}", fileId);
file.setThumbnailId(thumbnailId);
}
【问题讨论】:
-
如何在
generateThumbnail中获得file?
标签: spring spring-boot