본문 바로가기
Framework || Library/Spring

Spring Application 프로파일

by 시니성 2023. 9. 5.

Spring 프로파일은 서로 다른 환경에서의 애플리케이션 동작을 구성하고 관리하는 기능을 제공합니다. 예를 들어, 로컬 개발 환경에서는 H2 데이터베이스를 사용하고, 운영 환경에서는 MySQL을 사용하고 싶을 때, 프로파일을 사용하여 이런 설정을 분리할 수 있습니다.

기본 개념

Spring에서 프로파일을 사용하면 아래와 같은 장점이 있습니다:

  • 환경별 설정 분리: 개발, 스테이징, 운영 환경 등 다양한 환경에서 서로 다른 설정을 적용할 수 있습니다.
  • 코드 유지 및 관리의 용이성: 환경별 설정을 분리함으로써 코드의 유지와 관리가 용이해집니다.

예시 시나리오

로컬 개발 환경과 운영 환경에서 다른 데이터베이스와 로깅 설정을 사용하는 Spring Boot 애플리케이션을 만들어 보겠습니다.

1. 프로파일별 설정 파일 생성

먼저 resources 디렉토리에 아래와 같은 프로파일별 설정 파일을 생성합니다:

  • application-dev.properties (개발 환경)
  • application-prod.properties (운영 환경)
# application-dev.properties
spring.datasource.url=jdbc:h2:mem:testdb
logging.level.org.springframework=DEBUG
# application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/proddb
logging.level.org.springframework=INFO

2. @Profile을 사용한 빈 설정

데이터베이스 설정 빈을 프로파일에 따라 다르게 설정하려면 @Profile 어노테이션을 사용할 수 있습니다:

@Configuration
public class DatabaseConfig {

    @Bean
    @Profile("dev")
    public DataSource h2DataSource() {
        // ... H2 데이터베이스 설정 코드
    }

    @Bean
    @Profile("prod")
    public DataSource mysqlDataSource() {
        // ... MySQL 데이터베이스 설정 코드
    }
}

3. 프로파일 활성화

애플리케이션을 실행할 때 원하는 프로파일을 활성화해야 합니다. 다양한 방법이 있지만, 주로 사용되는 방법은:

  • 환경 변수를 통한 활성화:

      java -jar your-app.jar --spring.profiles.active=prod
  • application.properties 또는 application.yml에서 활성화:

      spring.profiles.active=dev

마치며

Spring 프로파일을 사용하면 다양한 환경에 맞는 설정을 쉽게 분리하고 관리할 수 있습니다. 환경에 따라 애플리케이션의 동작을 바꾸어야 할 때, 프로파일을 활용하는 것을 고려해보세요.