외부속성(.yml, .properties)의 속성들에 접근하기 위해 아래의 어노테이션을 많이 사용한다.
두 어노테이션의 차이점을 알아보자
@ConfigurationProperties
주석을 사용해야 합니다.ConversionService
를 통해 유효성 검사 및 데이터 변환을 지원합니다.application.properties
또는 application.yml
), 환경 변수 또는 명령줄 인수와 같은 다양한 외부 소스에서 속성을 정의할 수 있는 Spring Boot와 함께 자주 사용됩니다.database.url=jdbc:mysql://localhost:8080/mydb
database.username=admin
database.password=secret
@ConfigurationProperties(prefix = "database")
public class DatabaseProperties {
private String url;
private String username;
private String password;
// Getters and setters
}
@SpringBootApplication
@EnableConfigurationProperties(DatabaseProperties.class)
public class MyAppApplication {
// Main method and other code
}
DatabaseProperties
객체에 @Component
를 붙여 사용하는 방법@Value("${property.name}")
와 같은 SpEL(Spring Expression Language) 구문을 사용하여 속성에 액세스할 수 있습니다.@Value
로 개별적으로 주석을 달아야 합니다.@ConfigurationProperties
에 비해 유효성 검사 및 데이터 변환 측면에서 유연성이 떨어집니다.database.url=jdbc:mysql://localhost:8080/mydb
database.username=admin
database.password=secret
@Component
public class DatabaseProperties {
@Value("${database.url}")
private String url;
@Value("${database.username}")
private String username;
@Value("${database.password}")
private String password;
// Getters and setters
}
@ConfigurationProperties
는 관련 속성 및 계층적 바인딩 그룹을 처리할 때 선호되는 반면 @Value
는 개별 속성 값을 필드 또는 메서드 매개 변수에 직접 주입하는 데 유용하다. 두 주석 중 상황에 따라 적절한 어노테이션을 선택해 사용해보자!