Spring @Async 異步調用

在@Async加上@Transactional是無法起到事物控制的,因爲其是基於異步處理操作

在@Async內部調用方法中使用@Transactional即可

如:@Async+@Transactional不生效 ,@Async方法調用 a、b方法,在a、b方法中加上@Transactional生效

使用@Async需要在啓動類上加@EnableAsync

可以使用Future<T>獲取結果

@Component
public class MyAsyncTask {
    @Async
    public Future<String> one() {
        return new AsyncResult<>("執行結果");
    }
}

@Autowired
private MyAsyncTask asyncTask;

@Test
void test() throws InterruptedException, ExecutionException {
    Future<String> one = asyncTask.one();
    while (!one.isDone()){
        Thread.sleep(1000);
    }
    System.out.println(one.get());
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章