애플리케이션 실행 시 init 함수 작성법

Hyeon·2023년 7월 29일
0

Querydsl

목록 보기
1/7

여기서는 애플리케이션을 구동할 때 더미 데이터를 넣어주는 init 함수를 만들어보자.

애플리케이션과 테스트 분리

애플리케이션이 실행될 때는 더미데이터가 들어가지만, 테스트케이스가 실행될 때는 init 함수가 동작되지 않도록 application.yml 을 설정한다.

애플리케이션

spring:
  profiles:
    active: local
    #...(생략)...

테스트

spring:
  profiles:
    active: test
    #...(생략)...

이렇게 분리하면 main 소스코드와 테스트 소스 코드 실행시 프로파일을 분리할 수 있다.

Init 함수를 구현할 컴포넌트 클래스 생성

@Profile("local")
@Component
@RequiredArgsConstructor
public class InitMember {

    private final InitMemberService initMemberService;

    @PostConstruct
    public void init(){
        initMemberService.init();
    }

    @Component
    static class InitMemberService{
        @PersistenceContext
        private EntityManager em;

        @Transactional
        public void init(){
            Team teamA = new Team("teamA");
            Team teamB = new Team("teamB");
            em.persist(teamA);
            em.persist(teamB);

            for (int i = 0; i < 100; i++) {
                Team selectedTeam = i % 2 == 0 ? teamA : teamB;
                em.persist(new Member("member" + i, i, selectedTeam));
            }
        }
    }
}

출처

  • 인프런 김영한 님의 강의 실전! Querydsl 을 학습하며 정리한 내용입니다.
profile
컴공학부생입니다.

0개의 댓글