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