두 어노테이션 모두 Spring Framework 애플리케이션에서 속성의(.yml, .properties)의 구성 및 바인딩을 위해 사용되는 어노테이션 입니다. 두 어노테이션의 차이에 대해 알아보려고 합니다.
@Component
로 주석이 지정되지 않은 것을 포함하여 모든 관리 빈에서 사용할 수 있습니다.user:
name: Daniel
age: 31
public class User {
@Value("${user.name}")
private String name; // Daniel
@Value("${user.age}")
private int age; // 31
}
@ConfigurationPropertiesScan
및 구성 클래스로 적절한 설정이 필요합니다.dependencies {
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
}
// ...
tasks.named('compileJava') {
inputs.files(tasks.named('processResources'))
}
@SpringBootApplication
@ConfigurationPropertiesScan(basePackages = "")
public class SburRestDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SburRestDemoApplication.class, args);
}
}
매개변수로 패키지를 지정하지 않으면 기본으로 어노테이션이 붙은 패키지와 하위 패키지 대상으로 스캔을 진행한다.
@Bean
@ConfigurationProperties("example")
class example {
private String name;
private String age;
}
@SpringBootApplication
public class SburRestDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SburRestDemoApplication.class, args);
}
}
@Value
에 비해 더 많은 초기 설정 및 구성이 필요합니다.전반적으로 @Value
는 특히 동적 평가가 필요한 경우 몇 가지 개별 속성 값을 주입하는 데 적합합니다. 반면에 @ConfigurationProperties
는 더 큰 관련 속성 집합을 관리하고 형식 안전성, 유효성 검사 및 계층 구조를 제공하는 데 적합합니다.