Эквивалент Java app.config?

Есть ли Java-эквивалент .NET App.Config?

Если нет, существует ли стандартный способ сохранить настройки приложения, чтобы их можно было изменить после распространения приложения?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
25
0
27 502
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Самый простой способ - просто иметь файл свойств, например myapp.properties, со всеми вашими настройками. Это не очень продвинутый способ настройки, но его достаточно, или вы можете иметь свою собственную настройку на основе XML или получить их из база данных и т. д.

Ответ принят как подходящий

Для WebApps файл web.xml может использоваться для хранения настроек приложения.

Помимо этого, вы можете использовать класс Характеристики для чтения и записи файлов свойств.

Вы также можете посмотреть класс Предпочтения, который используется для чтения и записи системных и пользовательских настроек. Это абстрактный класс, но вы можете получить соответствующие объекты, используя userNodeForPackage(ClassName.class) и systemNodeForPackage(ClassName.class).

Не могли бы вы подробнее рассказать о первом варианте: «web.xml можно использовать для хранения настроек приложения»? Вы предлагаете сохранить настройки приложения как context-params? Или что-то другое?

theyuv 27.04.2016 13:49

Есть несколько разных типов параметров, которые вы можете поместить в web.xml, но я, вероятно, имел в виду context-param. Не помню, ведь с тех пор прошло 7,5 лет.

Powerlord 29.04.2016 01:43

Чтобы поместить предложение @ Powerlord (+1) об использовании класса Properties в пример кода:

public class SomeClass {
    public static void main(String[] args){
        String dbUrl = "";
        String dbLogin = "";
        String dbPassword = "";     
        if (args.length<3) {
            //If no inputs passed in, look for a configuration file
            URL configFile = SomeClass.class.getClass().getResource("/Configuration.cnf");
            try {
                InputStream configFileStream = configFile.openStream();
                Properties p = new Properties();
                p.load(configFileStream);
                configFileStream.close();

                dbUrl      = (String)p.get("dbUrl");
                dbLogin    = (String)p.get("dbUser");
                dbPassword = (String)p.get("dbPassword");               
            } catch (Exception e) {  //IO or NullPointer exceptions possible in block above
                System.out.println("Useful message");
                System.exit(1);
            }
        } else {
            //Read required inputs from "args"
            dbUrl      = args[0];
            dbLogin    = args[1];
            dbPassword = args[2];           
        }
        //Input checking one three items here
        //Real work here.
    }
}

Затем в корне контейнера (например, в верхней части файла jar) поместите файл Configuration.cnf со следующим содержимым:

#Comments describing the file
#more comments
dbUser=username
dbPassword=password
dbUrl=jdbc\:mysql\://servername/databasename

Это не идеально (мне было бы интересно услышать улучшения), но достаточно хорошо для моих текущих потребностей.

Серьезно? Значит, вы запускаете потоковый ридер над файлом, чтобы получить настройки? В случае нескольких классов вам понадобится что-то вроде вспомогательного класса, который можно использовать через? Это лучшее решение, которое Java может предложить здесь ??? Это кажется очень наивным.

tom33pr 26.10.2015 18:27

Это лучшее, что я мог сделать для своих нужд в 2013 году. Я считаю, что более общее решение обычно заключено в сервер приложений. На ум приходит фраза «корпоративные java beans», хотя я лично никогда не работал в этой среде.

Pursuit 27.10.2015 02:17

Другие вопросы по теме