위와같은 소스는 스프링이 추구하는 비침투성(스프링 코드가 사용자 코드에 들어가지 않는것)을 구현한것
핸들러도 ApplicationListener 인터페이스를 구현하지 않아도 되게 되었지만 빈으로는 등록해야 한다.
MyEventHandler.java
1 2 3 4 5 6 7 8 9
@Component publicclassMyEventHandler{
@EventListener publicvoidmyhandle(MyEvent event) { print("핸들러가 받은 이벤트의 데이터"+event.getData()); }
}
여러개의 핸들러가 하나의 이벤트를 핸들 할 경우? 동일한 쓰레드 내에서 순차적으로 실행된다. 순서는 보장되지 않으며 순서를 보장하고 싶으면 다음과 같이 @Order을 주면 된다.
1 2 3 4 5 6
@EventListener @Order(Ordered.HIGHEST_PRECEDENCE) // @Order(Ordered.HIGHEST_PRECEDENCE)+3 //낮은것이 먼저 실행됨 public void myhandle(MyEvent event) { print("핸들러가 받은 이벤트의 데이터"+event.getData()); }
비동기적으로 실행하고 싶을 때는? 순서는 보장안된다. 이땐 order도 무의미해짐.
1 2 3 4 5 6 7
@EventListener @Async //낮은것이 먼저 실행됨 public void myhandle(MyEvent event) { print("핸들러가 받은 이벤트의 데이터"+event.getData()); } ``
그리고 Application 클래스에 @EnableAsync 어노테이션을 붙여준다. 이 외에도 쓰레드 풀에 관련한 설정을 더 해야되는데 비동기 관련된 수업이 아니므로 건너뛴다.
스플링이 기본적으로 제공하는 이벤트들을 확인해보자 ContextRefreshedEvent: ApplicationContext를 초기화 했더나 리프래시 했을 때 발생. ContextStartedEvent: ApplicationContext를 start()하여 라이프사이클 빈들이 시작 신호를 받은 시점에 발생. ContextStoppedEvent: ApplicationContext를 stop()하여 라이프사이클 빈들이 정지 신호를 받은 시점에 발생. ContextClosedEvent: ApplicationContext를 close()하여 싱글톤 빈 소멸되는 시점에 발생. RequestHandledEvent: HTTP 요청을 처리했을 때 발생.
1 2 3 4 5
@EventListener public void myhandle(ContextRefreshedEvent event) { print("핸들러가 받은 이벤트의 데이터"+event.getData()); }
이벤트는 위와같이 확인할 수 있다는점을 잊지말자.
Posts
1. 스마트홈 구성 입문 - 필립스 휴, 스마트싱스 활용
스마트 홈 구성필립스 휴 조명을 구매하고, 이를 시리를 통한 호출 또는 자동화를 위해선 필립스 휴 브릿지가 필요하는 사실을 늦게 깨달았다.필립스 휴 조명을 더 살 생각은 없었기에 휴 브릿지를 사기엔 애매했고, 스마트싱스 스테이션이 휴 조명과 연동된다는 사실을 알게되었다
다중모니터 사용시 모니터를 bat파일로 제어
트리플 모니터를 사용 중 하나의 모니터는 필요에 따라 편하게 관리하고 싶었다.dual - triple 로 클릭만으로 전환할 수 있게 적용 1.MultiMonitorTool 설치https://www.nirsoft.net/utils/multi_monitor_tool.htm
premiere pro
premiere pro https://www.youtube.com/watch?v=VDVMGcC1zNU 프로젝트 생성 시퀀스 생성 영상 좌측 하단에 업로드 영상 좌측하단에서 우측으로 끌기 오디오 선택 후 우클릭 - 오디오 게인에서 -10 주면 잔잔하게. 오디오는 우측 창
Spring Reactive
리액티브 선언문https://www.reactivemanifesto.org 위에서 말하는 리액티브 시스템의 특징 4가지Responsive - 응답성Resilient - 유연성Elastic - 탄력성Message Driven 리액티브 스트림즈(Reactive Stream