Spring异步-@Async注解

Spring异步:@Async注解

使用@Async前需要开启异步支持:@EnableAsync 注解和XML方式

@Async返回值的调用:需要使用Future包装


  1.如果没有使用Future包装,能立马返回信息,但是返回的信息是异步方法没执行完的,一般是null。


  2.Future.get()方法获取异步的返回值。如果异步没有执行完成,那么会等到异步完成时调用。


@Async与@Transaction一起使用时,事务是无效的。如果要事务有效,需要在另外一个类中写事务的代码。


@Async的异常处理:可用Future.get()来获取异常。
        方法一:异步方法中捕获异常,用Future包装异常信息
        方法二:直接try-catch Future.get()


异步方法和调用类不要在同一个类中方法名 (和事务一样),因为同一个类中调用方法的话会略过代理进行直接调用

必须是 public ( 和事务一样)用public修饰才能被进行代理


@Async和@PostConstruct不能同时在同一个类中使用

原文地址:https://www.cnblogs.com/caoshouling/p/8644754.html