Spring

[Spring] 프로파일 설정을 통해 샘플데이터 추가하기

퉁그리 2022. 1. 7. 01:58

프로파일 설정

src/main/resources/application.yml

spring:
 profiles:
  active: local

src/test/resources/application.yml

spring:
 profiles:
  active: test

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

 

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

    private final InitMemberService initMemberService;

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

    @Component
    static class InitMemberService {

        @PersistenceContext
        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));
            }
        }
    }
}

@Transactional과 @PostConstruct 이 서로 공존할 수 없기 때문에 service을 새로 만들어 관리해야한다.

 

@profile 어노테이션을 통해 이렇게 분리해서 샘플 데이터를 관리할 수 있다.

 

 

출처 : 실전! Querydsl - 인프런 | 학습 페이지 (inflearn.com)