package com.munjaon.server.config; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.apache.commons.configuration2.PropertiesConfiguration; import org.apache.commons.configuration2.builder.ConfigurationBuilderEvent; import org.apache.commons.configuration2.builder.ReloadingFileBasedConfigurationBuilder; import org.apache.commons.configuration2.builder.fluent.Parameters; import org.apache.commons.configuration2.event.Event; import org.apache.commons.configuration2.event.EventListener; import org.apache.commons.configuration2.ex.ConfigurationException; import org.apache.commons.configuration2.reloading.PeriodicReloadingTrigger; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.File; import java.util.concurrent.TimeUnit; @Slf4j @Component public class ServerConfig { @Value("${agent.server-property-file}") private String serverProperyFile; private ReloadingFileBasedConfigurationBuilder builder; @PostConstruct void init() throws ConfigurationException { log.info("serverProperyFile : {}", serverProperyFile); builder = new ReloadingFileBasedConfigurationBuilder<>(PropertiesConfiguration.class).configure(new Parameters().fileBased().setFile(new File(serverProperyFile))); builder.addEventListener(ConfigurationBuilderEvent.CONFIGURATION_REQUEST, new EventListener() { @Override public void onEvent(Event event) { log.info("builder.getConfiguration() is Called!!"); } }); PeriodicReloadingTrigger configReloadingTrigger = new PeriodicReloadingTrigger(builder.getReloadingController(), null, 1, TimeUnit.SECONDS); configReloadingTrigger.start(); } public String getString(String key) throws ConfigurationException { return builder.getConfiguration().getString(key); } public int getInt(String key) throws ConfigurationException { return builder.getConfiguration().getInt(key, 3); } }