728x90
Spring Boot에서는 application.yml 또는 application.properties 파일의 설정을 클래스로 매핑하여 보다 편리하게 관리할 수 있습니다. 이를 통해 설정 값을 보다 쉽게 사용할 수 있고, 타입 세이프티(Type Safety)를 보장할 수 있습니다.
예시 YAML 설정 파일
site-map:
xmlns: "http://www.sitemaps.org/schemas/sitemap/0.9"
base-url: "https://example.com/base"
magazine-url: "https://example.com/magazine"
aws:
bucket: s3-test-bucket
path: sitemap
magazine: /magazine
file-name: /sitemap.xml
위와 같이 설정 파일이 있다고 할 때 이를 사용하기 위해 여러 방법으로 구현할 수 있습니다. 그 중 2가지 방법에 대해 살펴봅니다~!
1. 간단하게 @Value 어노테이션을 사용하여 값 가져오기
@Value("\${site-map.xmlns}")
lateinit var xmlns: String
@Value("\${site-map.base-url}")
lateinit var baseUrl: String
@Value("\${site-map.magazine-url}")
lateinit var magazineUrl: String
@Value("\${site-map.aws.bucket}")
lateinit var awsBucket: String
@Value("\${site-map.aws.path}")
lateinit var awsPath: String
@Value("\${site-map.aws.magazine}")
lateinit var awsMagazine: String
@Value("\${site-map.aws.file-name}")
lateinit var awsFileName: String
물론 1-2개의 설정 정보를 읽기에는 @Value로 가져오기가 편한 것 같습니다.
2. @ConstructorBinding를 사용하여 값 가져오기
build.gradle.kts 파일에 아래와 같이 의존성을 추가해주는 단계가 있습니다.
dependencies {
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
}
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.context.properties.ConstructorBinding
@ConstructorBinding
@ConfigurationProperties(prefix = "site-map")
data class SiteMapConfig(
val xmlns: String,
val baseUrl: String,
val magazineUrl: String,
val aws: AwsConfig
) {
data class AwsConfig(
val bucket: String,
val path: String,
val magazine: String,
val fileName: String
)
}
위 클래스를 활성화시키려면 아래의 코드가 추가되어야 합니다.
import org.springframework.context.annotation.Configuration
import org.springframework.boot.context.properties.EnableConfigurationProperties
@Configuration
@EnableConfigurationProperties(SiteMapConfig::class)
class AppConfig
사용하려면 생성자 주입을 통해 사용합니다.
import org.springframework.stereotype.Service
@Service
class SitemapServiceImpl(
val siteMapConfig: SiteMapConfig
) {
// 서비스 로직
}
다른 방법으로도 설정 정보를 읽어올 수 있지만 대표적인 2가지만 우선 살펴보았습니다.
정리
- @Value 어노테이션을 사용하여 값 가져오기:
- 간단하고 빠르게 특정 설정 값을 필드에 주입하는 방법입니다.
- @ConstructorBinding을 사용하여 값 가져오기:
- 설정 값을 그룹화하고, 타입 안전하게 사용할 수 있는 방법입니다. 불변성을 유지할 수 있어 보다 안전한 코드 작성이 가능합니다.
필요에 따라 적당히 사용하시면 좋을 것 같습니다.
오늘도 행복한 코딩 하세용!! 행코!! 🚀
728x90
댓글