#java #xml #customization #jdom
#java #xml #настройка #jdom
Вопрос:
Я пишу приложения, которым требуется множество опций. Эти параметры могут быть переданы приложению с помощью XML-файла. Эти файлы довольно большие, с некоторыми уровнями и несколькими зависимостями, которые невозможно смоделировать в схеме.
Таким образом, файл проходит проверку схемы jdom. Теперь я хочу создать некоторый объект конфигурации для приложения и установить некоторые переменные в некоторых классах.
Я действительно не вижу никакого способа не вводить жестко имена элементов и атрибутов, а затем перебирать эти элементы и создавать новые объекты.
Это приводит к тому, что приложение 20kLoc имеет 25 классов, содержащих конфигурации только для других классов.
Существует ли какое-нибудь правило золотого молотка, как использовать xml и настраивать приложения. Это сводится к размещению информации в файле в некоторых списках, хэш-таблицах и атрибутах объектов.
Можно ли это сделать проще? Может быть, какой-нибудь потрясающий фреймворк? Отражение? Компоненты? Beans — это просто условное слово для программирования на Java, или я что-то упускаю?
Комментарии:
1. У любого приложения должна быть четкая цель… Соотношение опций и функциональных возможностей должно быть сбалансированным или должно быть больше функций, чем добавляемых опций …. я думаю, вам следует начать фокусироваться на том, что важно в вашей программе, а что нет …. собираются ли ваши пользователи использовать все опции?
Ответ №1:
Кто управляет схемой файлов конфигурации? Если вы можете изменить это, вы можете упростить это настолько, чтобы ограничить количество необходимых классов.
Если они навязаны извне, вы могли бы получить некоторую отдачу от Apache Commons BeanUtils и Betwixt.
Комментарии:
1. Схема используется только для настройки большого количества приложений через Веб и делает практически невозможным ввод недопустимых записей. Но я не вижу, как я мог бы ограничить свои классы этим. Мне нужны все эти опции, и для разделения проблем я использую разные классы.
2. @Franz Kafka: BeanUtils позволяет представлять объекты Java, которые по сути являются картами ключ-значение, в качестве допустимых компонентов для других фреймворков, которым требуются Java-компоненты. В этом случае вам фактически не нужно объявлять для них новые классы. Но чем больше я читаю ваш вопрос и ваши комментарии, тем больше я думаю, что сложность вашего приложения с таким же успехом может оправдать 25 классов конфигурации.
3. Хорошо, я рад, если я не делаю что-то совершенно неправильное. Это только выглядит довольно повторяющимся, всегда вызывающим одни и те же две / три строки кода jdom и создающим отдельные объекты. Но это не может быть встроено в какую-то потрясающую функцию, создающую мои классы в общем виде.
4. @Franz Kafka: Если проблема заключается в фактическом синтаксическом анализе, а не в определении классов конфигурации, вы могли бы рассмотреть возможность использования XStream или Digester. Когда вы используете эти библиотеки, вы просто описываете, как XML должен быть сопоставлен с объектами ваших классов, а не разбираете XML узел за узлом, создавая объекты и назначая свойства.