from Dictionary - WhenAfterSpringReady
스프링 초기화 후 작업
CommandLineRunner
CommandLineRunner는 함수형 인터페이스로 애플리케이션 구동 후 실행되어야 하는 빈을 정의하기 위해서 사용한다.
@Component
class CmdRunner implements CommandLineRunner {
@Override
public void run ( String... args ) {
}
}
//or
@SpringApplication
public class TestServiceApplication {
public static void main(String[] args) {
SpringApplication.run(TestServiceApplication.class, args);
}
@Bean
public CommandLineRunner cmdRunner() {
return args -> {};
}
}
ApplicationRunner
스프링 애플리케이션이 구동된 후에 실행되어야 하는 빈을 정의하기 위한 인터페이스다.
@SpringApplication
public class TestServiceApplication {
public static void main(String[] args) {
SpringApplication.run(TestServiceApplication.class, args);
}
@Bean
public ApplicationRunner cmdRunner() {
return args -> {};
}
}
EventListener
ApplicationStartingEvent- 애플리케이션 실행되고 가장 빠른 타이밍에 실행
Environmen,ApplicationContext는 준비가 되어 있지 않음.- source로
ApplicationContext가 넘어오는데 계속 바뀔거라는 걸 인지해야함
ApplicationContextInitializedEvent- initializer가 호출됨
ApplicationContext는 준비되어 있음- BeanDefinition 등록 전
ApplicationEnvironmentPreparedEventEnvironment준비됨
ApplicationPreparedEventApplicationContext완전히 준비됐지만 refresh 전에 실행됨BootstrapRegistryInitializer를 가지고 있고 곧 destroy 예정
ApplicationStartedEventBootstrapRegistryInitializerdestroyedApplicationRunner,CommandLineRunner가 실행되기 전
ApplicationReadyEvent- 애플리케이션이 요청을 받아서 처리할 준비가 됐을 떄 발행
ApplicationFailedEvent- 애플리케이션 실패