728x90
Spring Boot에서 애플리케이션 설정 값을 외부에서 주입받아 사용하는 방법 중 두 가지 주요 방법은 @Value
와 @ConfigurationProperties
입니다. 이 두 가지 방법의 사용법과 차이점을 설명하겠습니다.
@Value 사용법
@Value
애노테이션은 주로 개별 속성 값을 주입받을 때 사용됩니다. 주입하려는 속성 값을 애플리케이션 설정 파일(application.properties 또는 application.yml)에서 정의한 후, 해당 값을 주입받을 필드에 @Value
애노테이션을 사용합니다.
- application.properties 또는 application.yml 파일에 설정 값 정의:
# application.properties
app.name=MyApp
app.version=1.0.0
# application.yml
app:
name: MyApp
version: 1.0.0
- @Value 애노테이션을 사용하여 값 주입:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("${app.version}")
private String appVersion;
// Getters
public String getAppName() {
return appName;
}
public String getAppVersion() {
return appVersion;
}
}
@ConfigurationProperties 사용법
@ConfigurationProperties
애노테이션은 그룹화된 속성 값을 주입받을 때 사용됩니다. 이를 통해 특정 접두사로 시작하는 모든 설정 값을 객체로 매핑할 수 있습니다. 주로 설정 값을 한 번에 여러 개 주입받아야 할 때 유용합니다.
사용법
- application.properties 또는 application.yml 파일에 설정 값 정의:
# application.properties
app.name=MyApp
app.version=1.0.0
app.description=This is my application
# application.yml
app:
name: MyApp
version: 1.0.0
description: This is my application
- @ConfigurationProperties 애노테이션을 사용하여 값 주입:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
private String version;
private String description;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
- @EnableConfigurationProperties 애노테이션을 사용하여 활성화:
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties(AppProperties.class)
public class AppConfig {
}
차이점
특성 | @Value | @ ConfigurationProperties |
용도 | 개별 속성 값을 주입받을 때 사용 | 그룹화된 속성 값을 객체로 매핑할 때 사용 |
설정 방식 | 단일 속성을 주입받기 위해 ${} 구문 사용 |
접두사(prefix)를 사용하여 관련된 속성들을 객체로 매핑 |
타입 변환 | 주입받을 때 타입 변환이 자동으로 수행되지 않음 | 자동으로 타입 변환 수행 |
유연성 | 간단한 값 주입에 적합 | 복잡한 설정 값을 주입받을 때 더 유용 |
바인딩 방식 | SpEL (Spring Expression Language) 사용 | 표준 바인딩 방식 사용 |
@ConfigurationProperties 를 등록하려고 하면 아래의 문구가 나오는데 의존성을 주입해주면 사라진다.
Spring Boot Configuration Annotation Processor not found in classpath
dependencies {
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
}
이 두 가지 방법을 적절히 활용하면 Spring Boot 애플리케이션의 설정 값을 효과적으로 관리할 수 있습니다. @Value
는 간단한 설정에, @ConfigurationProperties
는 복잡한 설정에 적합합니다.
'Spring Boot' 카테고리의 다른 글
[Spring Boot] BCrypt, SCrypt, Argon2 비밀번호 암호화 기법 (0) | 2024.07.09 |
---|---|
[Spring Boot] JWT, JWS, JWE 개념 및 차이점 (0) | 2024.07.08 |
[Spring Boot] HandlerMethodArgumentResolver 역할과 예제 (0) | 2024.07.02 |
[Spring Boot] Spring Boot CORS 설정 (0) | 2024.06.28 |
[Spring Boot] Spring Boot 에서 Spring REST Docs 설정, Swagger 와 비교 (0) | 2024.06.26 |