свойства на уровне приложения - PullRequest
3 голосов
/ 22 августа 2011

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

static PropertiesConfiguration config = null;
config = new PropertiesConfiguration("Interface.properties");

Это работает нормально.Но я знаю, что это не эффективный способ загрузки файла свойств несколько раз.

Может кто-нибудь помочь мне, как создать файл свойств на уровне приложения и создать файл Java (скажем, config.java ) + вызов метода, который возвращает свойство.

Ответы [ 3 ]

5 голосов
/ 22 августа 2011

Одним из способов решения этой проблемы является использование внедрения зависимости .У вас может быть одноэлементный бин, содержащий экземпляр свойства, и затем вы вводите этот бин как зависимость для каждого вашего класса, которому требуется доступ к этим свойствам.

Один из способов реализации внедрения зависимости с использованием Пружинный каркас.Например, вы можете добиться загрузки файла свойств с помощью Spring's PropertyPlaceHolderConfigurer .Затем этот компонент становится вашим ссылочным компонентом для остальной части приложения.Учебное пособие по этому вопросу можно найти здесь .

Другой вариант для вас - загрузить файл свойств в конструктор класса основного входа или метод main вашего приложения, а затем передатьвозражать против классов, которые нуждаются в этом.Однако это сделает ваше приложение более тесно связанным, и в будущем обслуживание будет сложнее.

Другой вариант - создать одноэлементный класс, который загружает свойства и имеет метод, который возвращает значения по мере необходимости.

3 голосов
/ 24 августа 2011

Я использовал этот подход для установки свойств на уровне приложения.

Определить файл свойств (скажем, configure.properties ).

Создать класс Java Конфиг :

public class Config {
    private static Config instance;
    private PropertiesConfiguration configure;

    private Config() throws ConfigurationException {
        configure = new PropertiesConfiguration("configure.properties");
    }

    public static Config getInstance() {
        if (null == instance) {
            try {
                instance = new Config();
            } catch (ConfigurationException ex) {
                throw new RuntimeException(ex);
            }
        }
        return instance;
    }

    public PropertiesConfiguration getConfigure() {
        return configure;
    }

    public void setConfig(PropertiesConfiguration configure) {
        this.configure = configure;
    }
}

Этот класс Java загружает файл свойств при запуске и вызывает метод getInstance, чтобы получить значение свойства. Чтобы получить значение свойства где-либо еще в приложении import Config и

Config.getInstance().getConfig().getString("property.given.in.properties");

Извините, если имена переменных не имеют особого смысла.

Спасибо всем за ваш вклад.

1 голос
/ 22 августа 2011

Я просто загружаю свой файл свойств в Свойства системы:

public void loadStreamToSysProperties(InputStream in) throws IOException
{
    Properties p = System.getProperties();
    p.load(in);                
}

Затем я могу получить их из System.getProperty, где бы я ни находился в коде.В этом примере InputStream - это поток, который я создал из имени файла / пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...