개발그래머
프로퍼티 동적으로 구성하기 본문
개요
- 운영 업무를 진행하면 동적으로 설정값들을 구성해야 하는 경우가 있습니다.
- 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를 사용하지 않고 간편하게 구성할 수 있다.
'Java' 카테고리의 다른 글
Java WatchService를 이용하여 파일 감지하기 (0) | 2024.04.28 |
---|---|
[자바스터디 번외] 문자열, 콜렉션, 스트림 (0) | 2023.09.24 |
'filter()' and 'map()' can be swapped (0) | 2023.07.31 |
[자바스터디 15주차] 람다식 (0) | 2023.07.24 |
[자바스터디 14주차] Generic (0) | 2023.07.18 |