티스토리 뷰

Spring-boot

[Spring boot] 초기화 코드

개발자-김씨 2021. 4. 28. 19:44
반응형

spring boot 학습 & 세팅 4탄 ~

 

딱히 부트의 내용도 아니고 간단해서 정리안하려다 .... 간단해서 정리

 

1. CommandLineRunner

  CommandLineRunner 보다는 ApplicationRunner을 사용하자

 

2. ApplicationRunner

ApplicationArguments를 인자로 받기 때문에 다른 방식에 비해 Arguments 처리가 수월한 장점이 있는 듯

@Component
@Order(2)
public class MyApplicationRunner implements ApplicationRunner {


    @Override
    public void run(ApplicationArguments args) throws Exception {
    	System.out.println("applicationRunner hello");
        args.getOptionNames().stream().forEach(name ->
            log.info("MyApplicationRunner run.. Options {}={}", name, args.getOptionValues(name))
        );
    }
}
public interface ApplicationArguments {
    String[] getSourceArgs();

    Set<String> getOptionNames();

    boolean containsOption(String name);

    List<String> getOptionValues(String name);

    List<String> getNonOptionArgs();
}

 

3.EventListener

@EventListener를 이용하면 @Async어노테이션을 붙이는 것만으로도 간단하게 비동기로 처리할 수 있고

ApplicationReadyEvent인자를 통해 다양한 처리가 가능하다.

@Configuration
@Slf4j
public class ApplicationReadyEventListener {


    @Async
    @EventListener
    public void ready(ApplicationReadyEvent event) {
    
    	log.debug("ApplicationReadyEvent ready ready ready!!");
    
        ConfigurableApplicationContext context = event.getApplicationContext();
        SpringApplication springApplication = event.getSpringApplication();
        String[] args = event.getArgs();
        long eventTime = event.getTimestamp();
    }
}

 

EventListener를 통해 다양한 이벤트를 받을 수 있는데 아래 코드를 통해 발생이벤트들과 호출시점을 확인해 볼수 있다.

@EventListener
public void event(ApplicationEvent event) {

	log.debug("{}", event.getClass().getSimpleName());
}

 

 

개인적인 정리

편의성에서 차이가 조금 있을 뿐, ApplicationRunner나 EventListener는 별 차이가 없다.

Arguments처리가 조금 복잡하다면 ApplicationRunner로, 비동기 처리를 조금 더 수월하게 하고 싶거나 context접근을 조금 수월하게 하고 싶다면 EventListener방식을이용하자

 

반응형

'Spring-boot' 카테고리의 다른 글

[Spring boot]Redis - Lettuce 설정  (5) 2021.05.06
[Spring boot] Filter 설정  (2) 2021.04.28
[Spring boot]yml configuration  (0) 2021.04.27
[Spring boot] undertow  (0) 2021.04.23
댓글