🫠코드를 작성하다보면 비동기로 코드를 작성하고 싶을때가 있습니다. 그럴때는
@Async
를 사용하시면 간편하게 사용할 수 있습니다. 사용 방법은 아래와 같습니다.
먼저 @Async
를 사용하기 위해서는 아래의 어노테이션을 추가해야 합니다.
@EnableAsync
@SpringBootApplication
public class MyApplication {
// ...
}
🤔위 어노테이션이 없다면 async가 작동하지 않으니 주의해야 합니다. 위 코드를 작성한 후에는 정말 쉽게 비동기 코드를 작성 할 수 있습니다.
@Service
public class MyService {
@Async
public void myAsyncMethod() {
// 비동기적으로 실행될 작업
}
}
😎위 코드에서
myAsyncMethod
는 비동기로 작동을 합니다. 이때@Async
의 경우 내부 호출을 하게 되면 작동을 하지 않으니 그 점을 주의해야 합니다. 또한@Async
의 경우SimpleAsyncTaskExecutor
가 기본적으로 동작하는데SimpleAsyncTaskExecutor
의 경우에는 호출이 될 때마다 쓰레드를 생성하게 되는데 만약 많은 양의 트래픽을 처리해야 한다면 아래와 같이ThreadPoolTaskExecutor
를 빈으로 등록해서 설정해주시면 됩니다.
@Bean("message")
public Executor googleService() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(2);
taskExecutor.setMaxPoolSize(5;
taskExecutor.setQueueCapacity(100;
taskExecutor.setThreadNamePrefix("Message-");
taskExecutor.initialize();
return taskExecutor;
}
```java
@Service
public class MyService {
@Async("message")
public void myAsyncMethod() {
// 비동기적으로 실행될 작업
}
}