아카이브

[스프링 부트 개념과 활용] Application Event / Type / Argument / Runner 본문

Spring/스프링 부트 개념과 활용

[스프링 부트 개념과 활용] Application Event / Type / Argument / Runner

주멘이 2021. 1. 3. 14:29

1. Application Event Listener

ApplicationListener - Application 라이프사이클 시점에 따라 Event Listener를 등록할 수 있다

interface ApplicationListener를 implements 

started
starting

Listener가 Bean이라면, 등록되어 있는 Bean 중에 이벤트 리스너를 자동으로 실행된다

하지만 ApplicationStartingEvent의 경우 Bean으로 등록하더라도, Application context가 load되기 전이기 때문에 리스너가 동작하지 않는다

ApplicationStartingEvent 등록은 수동으로 addListener

따라서 이런 경우에는 직접 등록해줘야 한다

2. Type

Type은 3가지로 구성되어 있다 (none, servlet, reactive)

Spring MVC가 존재하면 Servlet Type

Spring WebFlux가 존재하면, Reactive Type

MVC & WebFlux 모두 존재하면, 기본적으로 Servlet Type이지만 명시적으로 Reactive Type으로 실행 가능하다

3. Argument

Run/Debug Configurations - Environment

-D는 JVM option --는 Application Argument 

ApplicationArguments bean

어떤 Bean의 constructor가 1개 && parameter도 bean 이라면, spring이 자동으로 Bean 등록을 한다

그래서 Application 실행과정에서 별다른 call를 하지 않았음에도 불구하고, 해당 출력이 보이는 것을 확인할 수 있다

 

4. Application Runner

ApplicationRunner run() will get execute, just after applicationcontext is created and before spring boot application startup.

Runner가 여러개일 경우 @Order를 통해 우선순위 지정이 가능하다

ApplicationRunner - argument test