其他分享
首页 > 其他分享> > Spring @Async批注

Spring @Async批注

作者:互联网

我对Spring @Async注释有疑问.
我有一个控制器自动连线服务(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用作服务方法以增加客户端的控制器响应时间,但是它不起作用.
我会丢失东西吗?或者如何以最简单的方式进行修改?

解决方法:

您不会丢失任何内容,当您将@Async放在方法服务中时,将在另一个线程中执行,直到返回insertGnInsuranceDetail或引发任何异常,控制器的insertDetail方法才会返回.

标签:spring-transactions,xml-configuration,multithreading,spring-annotations,spring
来源: https://codeday.me/bug/20191118/2025593.html