본문 바로가기

개발/Spring

[Spring] 인프런 8차 Event


IoC컨테이너의 ApplicationEvent

스프링 4.2부터는 상속받지 않아도 쓸 수 있다.

 

사용방법

 

그 이전에는 ApplicationEvent라는 인터페이스를 상속받아야 사용 가능하다.

하지만 4.2부터는 상속받지 않아도 된다.


MyEvent라는 클래스를 만든다.
그리고 이 이벤트를 핸들러 할 MyEventHandelr를 만든다.
이 MyEventHandler는 빈에는 등록을 해줘야 한다.
@Component로 빈에 등록해 주고, 이벤트 함수는 @EventListener을 선언해준다.

그리고 이걸 테스트하기 위해 AppRunner라는 클래스가 ApplicationRunner를 상속해서 @Autowired ApplicationEventPublisher publishEvent;를 선언한 후,
publishEvent.publishEvent(new MyEvent(this, 100));을 통해 이벤트를 발생시켰다.

 

예외 사항들


MyEvent를 만들고 나서, 이를 발생시킬 핸들러가 만약 2개 이상이라면?
퍼블리셔가 이벤트를 발생시켰을 때, 순차적으로 전부 다 실행이 된다.
하지만 여기서 우리가 순서를 정해줄 수도 있다.
@Order()로 정해줄 수 있다.
이걸 @Async로 비동기적으로 실행할 수도 있다.






<궁금증>
ApplicationRunner란뭐지?

스프링 부트 애플리케이션 구동 시점에 특정 코드 실행을 시키기 위해서 2가지 인터페이스를 제공한다. 
CommandLineRunner & ApplicationRunner


이벤트 핸들러란?

-> 이벤트 핸들러란, 내가 발생시키고 싶은 이벤트를 만든 후에 이 이벤트를 발생시킬 수 있게 하는 핸들러이다.

이벤트를 발생시키고 싶은 주체는 해당 핸들러를 이용해 이벤트를 발생시킨다.


POJO란?: '프레임워크의 코드가 내 코드에 노출되지 않는 것

POJO(Plain Old Java Object): 말 그대로 해석하면 오래된 자바 오브젝트 방식이라는 말로서 Java EE등의 무거운 프레임워크들을 사용하게 되면서 해당 프레임이 무거운 객체를 만드는 것에 대한 반발에서 나오게된 용어이다.
진정한 POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다.

'개발 > Spring' 카테고리의 다른 글

Spring 예제 실행 과정  (0) 2020.12.26
터미널로 Spring실행하는 방법  (0) 2020.12.26
[Spring] 인프런 3차 강의  (0) 2020.12.24
[Spring] 인프런 2차 강의  (0) 2020.12.24
IoC 컨테이너란?  (0) 2020.12.23