관리 메뉴

개발그래머

프로퍼티 동적으로 구성하기 본문

Java

프로퍼티 동적으로 구성하기

임요환 2024. 5. 12. 20:39

개요

  • 운영 업무를 진행하면 동적으로 설정값들을 구성해야 하는 경우가 있습니다.
    • 1번 DB를 사용하여 구성
    • 2번 프로퍼티를 사용하여 구성
  • DB를 사용하는 방법은 개발자가 아닌 실질적인 사용자가 UI를 통해 지속적으로 관리를 하는 상황일때 주로 사용하는 편입니다.
  • 가벼운 작업은 프로퍼티를 통해 하는 편인데 기본적인 프로퍼티로 설정하게 되면 서버를 재배포해야 하는 번거로움이 생깁니다.
  • 그렇기 때문에 외부파일로 프로퍼티를 동적으로 구현하여 관리하는 것을 지향하는 편이며 해당 방법을 구현하는 법을 올리고자 한다.

사용법

implementation("commons-configuration:commons-configuration:1.10")

 

  • commons-configuration을 import하여 사용하게 된다
  • 2 버전도 있지만 사용법이 불편하고 스프링에서 제공하는 방법도 있지만 이 또한 사용하기 불편하다.
@Configuration
class DynamicConfig {
    companion object {
        const val FILE_NAME = "/Users/im-yohwan/workspace/kotlin-lab/config.properties"
    }

    @Bean
    fun propertiesConfiguration() : PropertiesConfiguration {
        val configuration = PropertiesConfiguration(FILE_NAME)
        configuration.reloadingStrategy = FileChangedReloadingStrategy()
        return configuration;
    }
}

 

  • properties 파일의 경로를 설정하고 해당 bean을 구현해 주면 된다.
@RestController
class DynamicConfigurationController(
    private val propertiesConfiguration: PropertiesConfiguration
) {
    @GetMapping("/dynamic")
    fun getDynamicConfig() : String {
        val key = propertiesConfiguration.getString("key")
        return key
    }
}

 

  • propertiesConfiguration 빈을 주입받아 사용하면 되고 내가 설정한 properties의 값을 가져올 수 있다.
  • 서버가 실행 중인 상태에도 properties의 값을 변경하게 되면 바로 적용된다.
  • 해당 기능을 사용하여 개발자만을 위한 편의 기능들을 추가하거나 가끔씩 변경되는 값들을 DB를 사용하지 않고 간편하게 구성할 수 있다.