@EventListener과 @Profile

wangjh789·2022년 8월 16일
0

[Spring] 스프링-DB-2

목록 보기
1/21

@EventListener

    @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 관련 로직이 다 처리되지 않은 시점에서 호출될 수도 있기 때문에 간혹 문제가 발생할 수 있다.)

@Profile

	@Bean
	@Profile("local")
	public TestDataInit testDataInit(ItemRepository itemRepository) {
		return new TestDataInit(itemRepository);
	}

@Profile("local")
특정 프로필의 경우에만 해당 스프링 빈을 등록한다. 여기서는 local이라는 이름의 프로필을 사용되는 경우에만 testDataInit이라는 스프링 빈을 등록한다.
spring.profiles.active=local : 빈 프로필 설정

만약 test 디렉토리 하위의 테스트를 수행시킬때 default 프로필이 test 변경된다.

profile
기록

0개의 댓글