Spring异步:@Async注解异步
使用@Async前须要开启异步支持:@EnableAsync 注解和XML方式spa
@Async返回值的调用:须要使用Future包装 代理
1.若是没有使用Future包装,能立马返回信息,可是返回的信息是异步方法没执行完的,通常是null。事务
2.Future.get()方法获取异步的返回值。若是异步没有执行完成,那么会等到异步完成时调用。get
@Async与@Transaction一块儿使用时,事务是无效的。若是要事务有效,须要在另一个类中写事务的代码。io
@Async的异常处理:可用Future.get()来获取异常。
方法一:异步方法中捕获异常,用Future包装异常信息
方法二:直接try-catch Future.get()方法
异步方法和调用类不要在同一个类中方法名 (和事务同样),由于同一个类中调用方法的话会略过代理进行直接调用异常
必须是 public ( 和事务同样)用public修饰才能被进行代理异常处理
@Async和@PostConstruct不能同时在同一个类中使用try-catch