Динамически загружать из файла свойств в Java - PullRequest
0 голосов
/ 24 августа 2018

У меня есть файлы config.properties с такими именами: names = john, jane

Затем у меня есть класс, который обращается к этому файлу и загружает имена.И у меня есть другой класс, который получает имя откуда-то, и если это имя в config.properties печатает "SUCCESS".Проблема в том, что если я добавлю имена в config.properties, мне придется снова запустить программу, она не загружается динамически.Какая альтернатива этому?

 public class PropertiesFile {

    private static final char OPENFILES_CONFIG_DELIMITER = ',';
    private static final String OPENFILES_CONFIG = "config.properties";

    private static org.apache.commons.configuration2.Configuration config;

    static {
        try {
            Parameters params = new Parameters();
            FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
                .configure(params.properties()
                    .setFileName(OPENFILES_CONFIG)
                    .setListDelimiterHandler(new DefaultListDelimiterHandler(OPENFILES_CONFIG_DELIMITER)));

            config = builder.getConfiguration();    } 
        catch (ConfigurationException cE) {
            //...
        }
    }

    public static Set<String> load() {
        String[] thingsToExecute = config.getStringArray("names");
        return new HashSet<String>(Arrays.asList(thingsToExecute));
    }

}



public class OpenFiles {

    private static Set<String> toExecute;

    public static void main(String[] args) {
        updateToExecute();
        connect();
    }


    private static void connect() {

            //code that obatins JSONObject

            if (obj4.has("name")) {
                String personName = obj4.get("name").toString();
                updateToExecute();
                if (toExecute.contains(personName))   {                                              
                    System.out.println("SUCCESS");
                } else {
                    System.out.println(personName+"is not in the list");
                } 
            }
    }


    private static void updateToExecute() {
        toExecute = PropertiesFile.load();

    }   
}
...