我有一個非常簡單的控制器是這樣的:我應該把@Async上的每個服務方法,使我的應用程序完全支持異步的春天?
@RequestMapping(value = "food", method = RequestMethod.POST)
public ResponseEntity<?> getAll(@RequestParam("term") String term) {
List<Food> foods = foodService.findByNameMatching(term);
return new ResponseEntity<>(foods, HttpStatus.OK);
}
,服務:
@Service
@Transactional
public class FoodService {
@Autowired
private FoodRepository foodRepository;
public List<Food> findByNameMatching(String name) {
return foodRepository.findMatchName(name);
}
}
的FoodRepository也不過只是一個JpaRepository。
到目前爲止流量將是:控制器 - >服務 - >庫
現在,我想我所有的REST API的支持asynchonous.In這種情況下,服務調用的信息庫查詢數據。我應該將@Async註釋放在FoodService的方法中,使查詢任務成爲異步嗎?
@Async
public List<Food> findByNameMatching(String name) {
return foodRepository.findMatchName(name);
}
在擴展,我應該把@Async詮釋了我所有的服務的方法,使我的應用程序完全支持異步?
所以,據我所知,在春季@Async註解支持異步而可贖回和DeferredResult做同樣的事情,所以這種情況下,我應該選擇哪一個?