Где должна быть размещена конфигурация? - PullRequest
4 голосов
/ 16 мая 2010

У меня есть приложение, структурированное следующим образом:

  • дао
  • домен
  • основной
  • Услуга
  • 1012 * Utils *

Я создал класс, который читает конфигурацию приложения из файла XML. Вопрос в том, где его разместить?

По рефлексу я бы поместил его в утилиты, но классы утилит имеют статические методы и не имеют состояния, тогда как этот класс использует экземпляр Apache Commons XMLConfiguration. Должен ли я просто адаптировать методы, чтобы этот экземпляр ограничивался областью действия методов этого класса?

Ответы [ 5 ]

3 голосов
/ 16 мая 2010

Я предполагаю, что предметы являются пакетами, поэтому я бы пошел с основной пакет.

  • Дао
  • домен
  • main содержит приложение и его конфигурационные считыватели
    • конфигурация
    • журнал
  • Услуга
  • 1024 * Utils *

Почему? Конфигурация приложения, будь то в XML или нет, и основано ли оно на среде приложения, такой как Spring или нет, является частью его основной функциональности. Загрузка приложения является основной обязанностью приложения. Все бизнес-функции, все блестящие функции, которые он предоставляет, реализованы на уровне домена и сервиса.

Вы правы, утилита это все о статических или подобных инструментах. Поскольку конфигурация приложения очень важна, я бы не объявил ее утилитой. Утилита - это то, что может быть легко заменено другой утилитой того же типа (например, StringUtil против StringUtils против IOUtils и т. Д. Все они имеют очень похожую функциональность)

2 голосов
/ 16 мая 2010

Поскольку конфигурация является сквозным аспектом, она не отображается исключительно на один из этих слоев. Поместите файлы конфигурации (XML или свойства) в путь к классам и используйте его через Spring для настройки ваших bean-компонентов.

Для данных конфигурации на основе свойств хорошим решением является PropertyPlaceholderConfigurer .

2 голосов
/ 16 мая 2010

Это зависит от системы сборки и типа приложения, которое вы используете, т.е. maven предлагает разместить конфигурационные файлы в src / main / resources

В файле WAR вы можете поместить их в WEB-INF или WEB-INF / config

В соответствии со структурой вашего проекта, я бы предложил ввести конфигурацию папки или ресурсы, так как почти все ожидают их там.

2 голосов
/ 16 мая 2010

Если вы работаете с Spring, взгляните на Конфигурация Заполнители . Вы можете использовать простой файл свойств Java для ваших свойств конфигурации и поместить его в путь к классу (или в любое другое место). Кроме того, вы можете создать свою собственную реализацию, чтобы использовать другую форму хранения значений конфигурации (XML, база данных и т. Д.)

1 голос
/ 16 мая 2010

Я призываю вас взглянуть на весну. Вначале это может показаться излишним, но вам это понравится

...