@EventListener(ApplicationReadyEvent.class)
public void initData() {
log.info("test data init");
itemRepository.save(new Item("itemA", 10000, 10));
itemRepository.save(new Item("itemB", 20000, 20));
}
@EventListener(ApplicationReadyEvent.class)
AOP를 포함한 스프링 컨테이너가 완전히 초기화를 다 끝내고, 실행 준비가 되었을 때 발생하는 이벤트이다. 스프링이 이 시점에 해당 어노테이션이 붙은 initData() 메서드를 호출한다.
(@PostConstructor 를 써도 크게 상관은 없지만 AOP 관련 로직이 다 처리되지 않은 시점에서 호출될 수도 있기 때문에 간혹 문제가 발생할 수 있다.)
@Bean
@Profile("local")
public TestDataInit testDataInit(ItemRepository itemRepository) {
return new TestDataInit(itemRepository);
}
@Profile("local")
특정 프로필의 경우에만 해당 스프링 빈을 등록한다. 여기서는 local이라는 이름의 프로필을 사용되는 경우에만 testDataInit이라는 스프링 빈을 등록한다.
spring.profiles.active=local
: 빈 프로필 설정
만약 test 디렉토리 하위의 테스트를 수행시킬때 default 프로필이 test 변경된다.