인강을 듣고

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

 

[Spring] ApplicationEventPublisher를 통한 스프링 이벤트 처리(ApplicationEventPublisher, Spring Event Processing)

| 스프링 ApplicationEventPublisher 스프링 ApplicationEventPublisher는 스프링에서 이벤트 프로그래밍에 필요한 인터페이스를 제공한다. ApplicationContext 인터페이스에 이미 상속되어있어서 ApplicationCon..

engkimbs.tistory.com

 

https://supawer0728.github.io/2018/03/24/spring-event/

 

Spring Event + Async + AOP 적용해보기

서론원래 글을 쓰기 위해 준비하던 내용은 Event를 강조하는 것이었는데, 준비를 하다 보니 Async와 AOP를 다 쓰게 되어버렸다. 이번 글에서는 하나의 transaction 안에서 많은 일을 처리하는 소스 코드

supawer0728.github.io

 

https://medium.com/@SlackBeck/spring-framework%EC%9D%98-applicationevent-%ED%99%9C%EC%9A%A9%EA%B8%B0-845fd2d29f32

 

Spring Framework의 ApplicationEvent 활용기

이 글은 필자가 현재 진행하고 있는 프로젝트에서 Event 식별하는 과정과 Spring Framework에서 제공하는 ApplicationEvent로 처리한 사례를 공유한다.

medium.com

 

 

+ Recent posts