我有一个关于 Spring @Async 注释的问题。 我有一个 Controller 自动连接了一个服务(GnInsuranceDetailsService)
@RequestMapping(value="/agn/AP0W01A_010/insertDetail.do")
public ResponseEntity<?> insertDetail(@ModelAttribute("dto")GnInsuranceDetailsDTO dto,HttpSession session) throws Exception {
gnInsuranceDetailsDTO.setBkFlag(getAgnUserInfo(session).getBkFlag());
gnInsuranceDetailsService.insertGnInsuranceDetail(dto);//open another thread to insert data
MessageDTO dto = new MessageDTO(AgnConstant.INSERT_SUCCESS);
return new ResponseEntity<MessageDTO>(dto,HttpStatus.OK);// increase return time for client
}
服务 insertGnInsuranceDetail 方法我声明了@Async up 方法。
@Transactional(readOnly = false)
@Async
public void insertGnInsuranceDetail(GnInsuranceDetailsDTO gnInsuranceDetailsDTO) throws Exception{
GnInsuranceDetails entity = gnInsuranceDetailsDTO.convert();
gnInsuranceDetailsDAO.save(detailsEntity);
}
我为服务方法添加了@Async 以增加客户端的 Controller 响应时间,但它并没有像我想的那样工作。 我会丢失什么东西吗?或者我怎样才能以最简单的方式修改?
最佳答案
您不会丢失任何东西,当您将 @Async 放在方法中时,服务将在不同的线程中执行, Controller 的 insertDetail 方法将不会返回,直到您的 insertGnInsuranceDetail 被返回或抛出任何异常。
关于Spring @Async 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866193/