Spring Boot에서 비동기 메서드 만들기
호출하는 서비스에 너무 많은 시간이 걸린다는 것을 알고 API를 호출하려고 한다고 가정해 보겠습니다. 따라서 우리는 호출이 이루어졌고 처리가 시작되었음을 알리는 응답을 반환하는 것을 선호합니다.
프로세스가 성공했는지 여부가 궁금할 수 있으므로 단일 호출이 종료되기를 기다리는 대신 모든 것을 기록하고 나중에 확인하거나 결과를 반환하는 다른 서비스를 만들 수 있습니다(정말 관심이 있는 경우).
Spring Boot에서 비동기 메서드를 만드는 방법
1. 비동기 지원 활성화:
Java 구성으로 비동기 처리를 활성화하려면 구성 클래스에 @EnableAsync
를 추가하기만 하면 됩니다.
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
@Configuration
@EnableAsync
public class SpringAsyncConfig {
}
활성화 주석으로 충분하지만 (ThreadPoolTaskExecutor
를 지정하는 것과 같이) 추가할 수 있는 더 많은 옵션이 있습니다.
2. 서비스를 비동기화하기:
우리는 컨트롤러를 건드리지 않을 것이므로 다음과 같을 것입니다:
@GetMapping("/do-heavy-work")
public ResponseEntity<MessageResponse> getTheWorkDone() {
//this service is called,
//but the process does not wait for its execution to end
someService.doWorkAsynchronously();
//we return immediately ok to the client
return ResponseEntity.ok(new MessageResponse("Executing..."));
}
호출된 메서드에 @Async를 추가하기만 하면 됩니다.
However @Async
has limitations to keep in mind:
- it must be applied to public methods only,
- calling the method decorated with
@Async
from within the same class won't work,
방법은 다음과 같습니다.
@Async
public void doWorkAsynchronously() {
try {
// the nessesary work
// log the success
}
catch (Exception ex) {
// log the error
}
}
그게 다야 😎, 비동기 메서드가 준비되었습니다 😉.
3. 추가 옵션:
Spring Boot가 제공하는 기타 항목은 여기에서 다루지 않습니다.
https://spring.io/guides/gs/async-method/
Reference
이 문제에 관하여(Spring Boot에서 비동기 메서드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/oum/create-an-asynchronous-method-in-spring-boot-4fkn
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
@Configuration
@EnableAsync
public class SpringAsyncConfig {
}
@GetMapping("/do-heavy-work")
public ResponseEntity<MessageResponse> getTheWorkDone() {
//this service is called,
//but the process does not wait for its execution to end
someService.doWorkAsynchronously();
//we return immediately ok to the client
return ResponseEntity.ok(new MessageResponse("Executing..."));
}
However @Async
has limitations to keep in mind:
- it must be applied to public methods only,
- calling the method decorated with
@Async
from within the same class won't work,
@Async
public void doWorkAsynchronously() {
try {
// the nessesary work
// log the success
}
catch (Exception ex) {
// log the error
}
}
Reference
이 문제에 관하여(Spring Boot에서 비동기 메서드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/oum/create-an-asynchronous-method-in-spring-boot-4fkn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)