我对Spring @Async注释有疑问。
我有一个 Controller 自动连线服务(GnInsuranceDetailsS​​ervice)

@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放在方法服务中时,将在另一个线程中执行,直到返回insertGnInsuranceDetail或引发任何异常, Controller 的insertDetail方法才会返回。

09-26 11:59