スプリングブート非同期開発

Spring Boot はさまざまな非同期開発メソッドを提供します。一般的に使用されるメソッドの一部を以下に示します。

  1. @Async アノテーションを使用する

Spring Boot では、 @Async アノテーションを使用してメソッドを非同期として宣言できます。非同期サポートを有効にするには、@EnableAsync アノテーションをスタートアップ クラスまたは構成クラスに追加する必要があります。

import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@EnableAsync
@Service
public class MyService {
    
    

    @Async
    public void doSomething() {
    
    
        // 这里是异步任务代码...
    }
}
  1. TaskExecutorの使用

@Async アノテーションを使用するだけでなく、TaskExecutor を使用して非同期タスクを手動で実行することもできます。構成クラスで TaskExecutor Bean を作成し、非同期タスクを実行する必要がある場所でそれを使用できます。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.SimpleAsyncTaskExecutor;

@Configuration
public class TaskExecutorConfig {
    
    

    @Bean(name = "taskExecutor")
    public SimpleAsyncTaskExecutor taskExecutor() {
    
    
        return new SimpleAsyncTaskExecutor();
    }
}
  1. CompletableFuture の使用

Spring Boot は、非同期タスクを実行して結果を取得するために使用できる CompletableFuture クラスも提供します。CompletableFuture は Java 8 で導入され、Spring Boot もそれをサポートします。

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.springframework.stereotype.Service;

@Service
public class MyService {
    
    

    public CompletableFuture<String> doSomethingAsync() throws InterruptedException, ExecutionException, TimeoutException {
    
    
        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    
    
            // 这里是异步任务代码...
            return "Hello World!";
        });
        return future;
    }
}

おすすめ

転載: blog.csdn.net/m0_61581389/article/details/132561536