Spring event listener

@Component
public class MyListener {
  
    @EventListener
    public void handleContextRefresh(ContextRefreshedEvent event) {
        ...
    }
}

Command run

스프링 부트 애플리케이션 구동 시점에 특정 코드 실행 시키기기 위한 2가지 인터페이스.

  1. CommandLineRunner: void run(String... args)
  2. ApplicationRunner: void run(ApplicationArguments args)

두 인터페이스의 용도는 같다. parameter 를 어떻게 받을지 정도만 차이가 있다. (참고: StackOverflow:When and why do we need ApplicationRunner and Runner interface?)

Integration Test Validate

mockMvc.perform(get("/form"))
   .andExpectAll(
       status().isOk(),
       content().mimeType(MediaType.APPLICATION_JSON));

MockMvc 의 결과를 MockMvcResultMatchers 로 검증 한다. jsonpath/content/model 등 이 있다.

SpringBoot AutoConfiguration

Spring Boot Auto Configuration 설정과 원리
@SpringBootApplication@ComponentScan@EnableAutoConfiguration 을 포함하고 있습니다.
SpringBoot 는 @EnableAutoConfiguration 이 활성되면 Spring Boot 가 미리 정의해둔 spring-boot-autoconfigure/META-INF/spring.factories 리스트의 Class 들을 읽어서 정의된 Bean 을 등록합니다. 자동 설정된 Bean 리스트는 Github:SpringBoot 에서 확인 가능합니다.
만약 특정 AutoConfiguration을 사용하지 않으려고 한다면 exclude 설정을 하면 됩니다.

Properties