Programming/Kotlin
[kotlin] Springboot - Configuration properties
기록하는 백앤드개발자
2024. 5. 25. 10:10
반응형
ㅁ 들어가며
ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다.
ㅁ Configuration properties
ㅇ Kotlin에서 애플리케이션 속성을 관리하는 데 권장되는 방법은 읽기 전용 properties을 사용하는 것입니다.
@ConfigurationProperties("blog")
data class BlogProperties(var title: String, val banner: Banner) {
data class Banner(val title: String? = null, val content: String)
}
ㅇ BlogProperties.kt을 생성합니다.
ㅁ Application Enable Properties 설정
@SpringBootApplication
@EnableConfigurationProperties(BlogProperties::class)
class BlogApplication {
// ...
}
ㅇ properties를 사용하기 위해서 BlogApplication에서 EnableConfigurationProperties 레벨을 활성화 시켜줍니다.
ㅁ Properties 사용을 위한 gradle 설정
ㅇ IDE에서 이러한 사용자 정의 속성을 인식하기 위해 고유한 메타데이터를 생성하려면 다음과 같이 spring-boot-configuration-processor 종속성을 사용하여 kapt를 구성해야 합니다.
plugins {
...
kotlin("kapt") version "1.9.22"
}
dependencies {
...
kapt("org.springframework.boot:spring-boot-configuration-processor")
}
ㅁ applicaiton.properties에 blog 설정
blog.title=Blog
blog.banner.title=Warning
blog.banner.content=The blog will be down tomorrow.
ㅁ 설정정보를 사용할 blog.mustache 페이지 수정
{{> header}}
<div class="articles">
{{#banner.title}}
<section>
<header class="banner">
<h2 class="banner-title">{{banner.title}}</h2>
</header>
<div class="banner-content">
{{banner.content}}
</div>
</section>
{{/banner.title}}
...
</div>
{{> footer}}
ㅁ Controller에 설정정보 주입
@Controller
class HtmlController(private val repository: ArticleRepository,
private val properties: BlogProperties) {
@GetMapping("/")
fun blog(model: Model): String {
model["title"] = properties.title
model["banner"] = properties.banner
model["articles"] = repository.findAllByOrderByAddedAtDesc().map { it.render() }
return "blog"
}
// ...
ㅇ BlogProperties를 주입 받아서 View에 전달한다.
ㅁ 실행
ㅇ 웹 애플리케이션을 다시 시작하고 새로 고치면 http://localhost:8080/ 블로그 홈페이지에 배너가 표시된다.
반응형