Spring event listener
@Component
public class MyListener {
@EventListener
public void handleContextRefresh(ContextRefreshedEvent event) {
...
}
}
Command run
스프링 부트 애플리케이션 구동 시점에 특정 코드 실행 시키기기 위한 2가지 인터페이스.
- CommandLineRunner:
void run(String... args)
- 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 등 이 있다.
- JsonPath: Integration Testing of Spring MVC Applications: Write Clean Assertions with JsonPath
- Model: Integration Testing of Spring MVC Applications: Forms
- Content: Spring Boot & 테스트 코드 작성 (3) - MockMvc
- Hamcrest Matcher 로 배열 검증 하기
Matchers.everyItem
,Matchers.containsInAnyOrder
, 메소드가 유용하게 쓰인다.- 굉장히 다양한 Operation 들을 제공한다. org.hamcrest.Mathcers:JavaDoc 에서 검색해서 잘 사용하자.
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
- application properties reference
@ConfigurationProperties
사용법@ConfigurationProperties
@EnableConfigurationProperties(ConfigProperties.class)
@ConfigurationPropertiesScan("com.baeldung.properties")
- Spring test 에서 property source 로드 하기