인강을 듣고
Event라는 개념을 공부했다.
어렴풋이 -
이해는 되는데 이걸 도대체 업무에서 어떻게 쓸 수 있을까?
란 의문점이 생겼다
도대체 Async로 하는거랑, 그냥 method 호출하는거랑
다른점이 뭐지? 이점이 뭐지???
그래서 서치해보았다~
1. Application Event 란?
스프링 ApplicationEventPublisher는 스프링에서 이벤트 프로그래밍에 필요한 인터페이스를 제공한다. ApplicationContext 인터페이스에 이미 상속되어있어서 ApplicationContext의 구현체에서도 접근이 가능하다.
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext applicationContext;
@Override
public void run(ApplicationArguments args) throws Exception {
applicationContext.publishEvent(new MyEvent(this, 1)); // event에 접근 가능
}
}
이벤트 수신 방법? @EventListener를 사용해서 빈의 메소드에 사용
기본적으로는 synchronized 이다.
@Component
public class MyEventHandler {
@EventListener
// 반드시 다음 어노테이션을 써주어야 한다.
public void handle(MyEvent event){
System.out.println("Event 수신 !!!" + event.getData());
}
}
이벤트 순서를 정하고 싶다면 @Order 을 사용
비동기적으로 실행하고 싶다면 @Async을 사용하면 된다.
https://engkimbs.tistory.com/718?category=767795
https://supawer0728.github.io/2018/03/24/spring-event/
'DEVELOP > Backend' 카테고리의 다른 글
[Spring] DataAccessException 이란? (Spring의 예외처리 - 사라진 SQLException) (0) | 2021.05.20 |
---|---|
[Spring] @RestControllerAdvice , @ExceptionHandler 로 예외 처리하기 (0) | 2021.05.20 |
[Spring] Async로 동작할때 Interceptor를 어떻게 탈까? (2) | 2020.06.11 |
[Spring] Task 실행과 스케줄링 ( TaskExecutor , TaskScheduler) (0) | 2020.05.28 |
Spring Security 에서 OAuth 2.0이란? (0) | 2020.05.18 |