본문 바로가기

Study Information Technology

Spring Boot에서 프로퍼티 파일을 활용한 설정 관리

728x90
반응형

Spring Boot에서 프로퍼티 파일을 활용한 설정 관리

Overview

Spring Boot는 애플리케이션 설정을 외부 파일에서 관리할 수 있는 강력한 기능을 제공합니다. 이 기능은 application.properties 또는 application.yml 파일을 통해 애플리케이션의 설정을 손쉽게 관리할 수 있게 해줍니다. 이 문서에서는 Spring Boot 애플리케이션에서 프로퍼티 파일을 사용하는 방법을 자세히 설명하겠습니다.

1. 기본 개념

Spring Boot는 기본적으로 src/main/resources 디렉토리에 위치한 application.properties 또는 application.yml 파일을 자동으로 인식하여 설정을 로드합니다. 이러한 파일들은 애플리케이션의 다양한 설정을 정의하는 데 사용됩니다.

예시:

  • application.properties 파일의 기본 설정

    server.port=8080
    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=root
    spring.datasource.password=secret
  • application.yml 파일의 동일한 설정

    server:
    port: 8080
    spring:
    datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret

2. 프로퍼티 파일 위치와 설정 우선순위

Spring Boot는 다양한 프로퍼티 파일을 사용할 수 있으며, 설정 우선순위는 다음과 같습니다:

  1. 명령줄 인수: --key=value 형태로 제공된 인수는 가장 높은 우선순위를 가집니다.
  2. application.properties 또는 application.yml 파일: src/main/resources 디렉토리에 위치합니다.
  3. 프로파일별 프로퍼티 파일: 예를 들어 application-dev.propertiesdev 프로파일이 활성화된 경우에만 적용됩니다.
  4. 환경 변수: 시스템 환경 변수로 설정된 값이 포함됩니다.

이러한 우선순위를 통해 동일한 키가 여러 위치에서 설정될 경우, 가장 높은 우선순위의 값이 사용됩니다.

예시:

  • 기본 application.properties 파일

    server.port=8080
  • application-dev.properties 파일

    server.port=9090
  • 명령줄 인수로 제공된 설정

    java -jar myapp.jar --server.port=7070

이 경우, server.port의 값은 7070이 됩니다.

3. 프로파일(Profile)과 프로퍼티 파일

Spring Boot는 다양한 환경에서 애플리케이션을 실행할 수 있도록 프로파일 기능을 제공합니다. 프로파일은 애플리케이션이 실행될 환경에 따라 다른 설정을 사용할 수 있게 해줍니다. 이를 통해 개발, 테스트, 운영 환경에서 각기 다른 설정을 관리할 수 있습니다.

예시:

  • application-dev.properties

    spring.datasource.url=jdbc:mysql://localhost:3306/devdb
  • application-prod.properties

    spring.datasource.url=jdbc:mysql://localhost:3306/proddb

프로파일을 활성화하려면 application.properties 파일 또는 명령줄 인수에서 spring.profiles.active를 설정하면 됩니다.

명령줄 인수 예시:

java -jar myapp.jar --spring.profiles.active=prod

4. 프로퍼티 값 주입

Spring Boot는 애플리케이션의 설정 값을 손쉽게 주입할 수 있는 기능을 제공합니다. @Value 어노테이션이나 @ConfigurationProperties를 사용하여 프로퍼티 값을 주입받을 수 있습니다.

@Value 어노테이션 예시:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyService {

@Value("${server.port}")
private int serverPort;

// Getter와 Setter
}

@ConfigurationProperties 예시:

application.properties

myapp.datasource.url=jdbc:mysql://localhost:3306/mydb
myapp.datasource.username=root
myapp.datasource.password=secret

MyProperties 클래스

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "myapp.datasource")
public class MyProperties {

private String url;
private String username;
private String password;

// Getter와 Setter
}

5. 커스텀 프로퍼티 파일

기본 application.properties 외에도 별도의 프로퍼티 파일을 추가로 사용할 수 있습니다. 이 경우, @PropertySource 어노테이션을 사용하여 추가 프로퍼티 파일을 명시할 수 있습니다.

예시:

custom.properties 파일

custom.greeting=Hello, World!

Configuration 클래스에서 프로퍼티 파일 로드

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:custom.properties")
public class AppConfig {
}

@Value 어노테이션을 사용하여 커스텀 프로퍼티 접근

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class CustomService {

@Value("${custom.greeting}")
private String greeting;

// Getter와 Setter
}

6. 에러 처리 및 해결책

Spring Boot에서 프로퍼티 파일을 사용할 때 발생할 수 있는 일반적인 에러와 해결 방법은 다음과 같습니다:

  • org.springframework.boot.context.properties.ConfigurationPropertiesBindingException: 설정 값을 주입받을 때 발생합니다. 이 에러는 설정 파일에 잘못된 형식이 포함되어 있을 때 발생할 수 있습니다. 해결 방법으로는 프로퍼티 파일의 형식을 검토하고, 올바른 형식으로 수정하는 것입니다.

  • java.lang.IllegalStateException: Failed to load ApplicationContext: 주로 설정 파일을 찾을 수 없거나 읽을 수 없을 때 발생합니다. 이 에러는 파일 경로가 잘못되었거나, 파일이 src/main/resources 디렉토리에 없을 때 발생할 수 있습니다. 이 경우 파일 경로와 위치를 확인하고 올바르게 배치해야 합니다.

참고문서

이 문서를 통해 Spring Boot에서 프로퍼티 파일을 효과적으로 활용하여 애플리케이션 설정을 관리하는 방법을 이해할 수 있기를 바랍니다.

728x90
반응형