1. Spring Boot 외부 설정이란
- Spring Boot의 외부 설정(Externalized Configuration)은 동일한 애플리케이션 코드를 서로 다른 환경에서 실행할 수 있도록 설정을 외부화하는 기능입니다.
- 개발, 테스트, 운영 환경에서 각각 다른 데이터베이스 정보나 API 키를 사용해야 할 때 코드 변경 없이 설정만으로 이를 해결할 수 있습니다.
- Java 프로퍼티 파일, YAML 파일, 환경 변수, 명령행 인수 등 다양한 외부 설정 소스를 지원합니다.
팁
외부 설정을 사용하면 코드와 설정을 분리하여 애플리케이션의 유연성을 크게 높일 수 있습니다. 특히 컨테이너 환경에서는 필수적인 기능입니다.
2. 설정값 사용 방법
2.1 @Value 어노테이션
- 가장 간단한 방법으로
@Value어노테이션을 사용하여 프로퍼티 값을 직접 주입할 수 있습니다.
@Value 사용 예시
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
@Value("${name}")
private String name;
@Value("${app.timeout:30}")
private int timeout; // 기본값 30 설정
// getter 메서드들...
}
위 예시에서 name 프로퍼티는 설정 파일에서 값을 가져오며, timeout은 설정값이 없을 경우 기본값 30을 사용합니다.
2.2 Environment 추상화
- Spring의
Environment인터페이스를 통해 프로그래밍 방식으로 설정값에 접근할 수 있습니다.
Environment 사용 예시
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
@Component
public class ConfigService {
private final Environment env;
public ConfigService(Environment env) {
this.env = env;
}
public String getDatabaseUrl() {
return env.getProperty("database.url", "jdbc:h2:mem:testdb");
}
}
2.3 @ConfigurationProperties
- 구조화된 객체로 설정값을 바인딩할 때 사용하는 가장 권장되는 방법입니다.