관리 메뉴

피터의 개발이야기

[kotlin] Springboot - Configuration properties 본문

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/ 블로그 홈페이지에 배너가 표시된다.

반응형
Comments