Вычитывание файла с применением Singleton

300
14 февраля 2017, 18:26

Задача вычитать из конфига ключ и при необходимости использовать ключ из памяти, а не постоянно вычитывать и тратить ресурсы

Проблема что не выходит толком реализовать с помощью синглтона конструктор класса (public LoggerImpl (PropertiesLoader propertiesLoader)) который считывает из файла конфига строчку с ключем "accessToken".

Подскажите, пожалуйста, как можно реализвать Синглтотом одноразовое считывание файла?

package org.BrovaryCityCouncil.logging;
import com.rollbar.Rollbar;
import org.BrovaryCityCouncil.properties.PropertiesLoader;

public class LoggerImpl implements Logger {
private PropertiesLoader propertiesLoader;
private Rollbar rollbar;
private static LoggerImpl instance;
public LoggerImpl() {
    super();
}
public  synchronized LoggerImpl getInstance(){
    if (instance == null){
        instance = new LoggerImpl(propertiesLoader);
    }
    return instance;
}

public LoggerImpl (PropertiesLoader propertiesLoader) {
    this.propertiesLoader = propertiesLoader;
    // считываем из файла конфига 
    rollbar = new Rollbar(propertiesLoader.getProperty("accessToken"), "production");
}

public void logWarning(Throwable error) {
    rollbar.warning(error);
}
public void logCritical(Throwable error) {
    rollbar.critical(error);
}
public void logInfo(Throwable error) {
    rollbar.info(error);
}
public void logDebug(Throwable error) {
    rollbar.debug(error);
}
public void logger(Throwable error) {
    rollbar.log(error);
}
public void logError(Throwable error) {
    rollbar.error(error);
}
public Rollbar getRollbar() throws Exception {
    return rollbar;
}
}

Сlass PropertiesLoaderImpl

public class PropertiesLoaderImpl implements PropertiesLoader {
@Override
public String getProperty(String propertyName) {
    Properties properties = new Properties();
    try {
        FileInputStream file = new FileInputStream("src/main/resources/config.properties");
        properties.load(file);
        return properties.getProperty(propertyName);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
}
READ ALSO
Проблемы с коннектором java tarantool

Проблемы с коннектором java tarantool

Пытался сделать java коннектор к тарантул 172 в NetBeans, делал по мануалу с connector java for tarantool,при запуске, программа ссылается на отсутствие главного...

384
Cursor и выборка значений

Cursor и выборка значений

Продолжаю рубрику безответных вопросов на Stack overflow

286
Синглтон на основе DCL

Синглтон на основе DCL

Существует такая реализация синглтона на основе double checked locking (пункт 2):

271
Реализовать getMapAsync() в классе

Реализовать getMapAsync() в классе

Есть активити в которой реализую метод getMap(), но так как он depricated я его не могу реализовать в полной мереНашёл несколько вариантов решения...

333