[Springboot] 여러 프로필 관리하기

winluck·2024년 9월 3일
0

Springboot

목록 보기
16/18
  • 프로젝트를 개발하다 보면 로컬 개발 환경과 실제 배포 환경을 분리해야 할 때가 있다.
  • 이를 위해 Spring에서는 Profile을 통해 빌드 시 활용할 appplication.yml을 지정해줄 수 있다.

application.yml

spring:
  profiles:
    default: local
  • spring.profiles.default: 별도의 Active Profile이 없는 경우 local 프로필이 활성화된다.
    • 즉 application-local.yml의 환경변수 활용
  • spring.profiles.active: 특정 Profile을 명시적으로 활성화한다.

@Profile

  • @Profile 어노테이션을 통해 프로필에 해당하는 환경별로 관련 리소스를 설정할 수 있다.
@Configuration
public class AppConfig {

    @Bean
    @Profile("dev")
    public DataSource devDataSource() {
        return new DataSource("jdbc:h2:mem:devDb", "devUser", "devPassword");
    }

    @Bean
    @Profile("prod")
    public DataSource prodDataSource() {
        return new DataSource("jdbc:mysql://prodDb", "prodUser", "prodPassword");
    }
}

@ActiveProfiles

  • 테스트코드에서 클래스 혹은 메서드 단위에 @ActiveProfiles을 붙이면 실행 중 환경변수에 접근할 때 해당 프로필의 환경변수를 사용하게 된다.
    @DataJpaTest
    @ActiveProfiles("test")
    class CommentRepositoryTest {
        @Autowired
        CommentRepository commentRepository;
    }
  • 혹은 아래처럼 build.gradle 파일에 테스트코드 실행 시 프로필을 고정시키는 옵션을 추가할 수 있다.
    // build.gradle
    
    test {
    	systemProperty 'spring.profiles.active', 'test'
    }

빌드

  • 여러 application.yml이 존재할 때 특정 프로필로 빌드하기 위해서는 아래와 같은 형태로 실행할 수 있다.
java -jar -Dspring.profiles.active=[프로필명] [jar파일명]
profile
Discover Tomorrow

0개의 댓글