Утилита аннотаций по сравнению с XML-файлами для настройки - PullRequest
0 голосов
/ 06 февраля 2012

Является ли в Java хорошей практикой использование аннотаций для настройки приложения, а не использования файлов XML? Я более скептически отношусь к этому, потому что использование аннотаций подразумевает изменение исходных файлов Java, и это так же хорошо, как объявление констант в файлах Java, а затем использование этих констант, в то время как при создании конфигураций с использованием файлов XML мы можем сохранить все изменения конфигурации Вдали от исходных файлов Java и хранения конфигураций в отдельных XML-файлах, этот подход звучит более аккуратно. Кроме того, когда нам нужно внести изменения в конфигурацию, мы знаем, какой XML-файл нужно изменить, а не ищем аннотации в java-файлах. Кроме того, мы можем обновить XML-файл в EAR без повторной компиляции кода, в то время как если мы внесем какое-либо изменение в аннотацию, то нам нужно снова скомпилировать код.

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

Ответы [ 5 ]

1 голос
/ 06 февраля 2012

То, что использовать, может варьироваться в зависимости от того, что настраивается, как используется конфигурация, проектных / культурных соглашений и т. Д. Хорошая поддержка IDE делает использование более удобным и надежным.

Лично, хотя я использую и XML, и аннотации, я склонен предпочесть конфигурацию XML для многих задач, особенно в более крупных проектах. Например, в Spring я предпочитаю конфигурацию XML: проще управлять самой конфигурацией, наборами изменений конфигурации и изменениями, специфичными для среды (например, тестирование, на сервере и т. Д.), Когда она более локализована.

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

В конечном счете, это вопрос предпочтений и удобства, а не чисто технический. (За исключением случаев, когда XML и аннотации поддерживают различные функции; иногда один предлагает более полные возможности.)

1 голос
/ 06 февраля 2012

Я предпочитаю аннотации, так как моя IDE может помочь мне проверить мои конфигурации.Конфигурации, хранящиеся в xml-файлах, не могут быть проверены перед выполнением (я думаю в основном о пружинах и инъекциях)

Кроме того, я считаю, что для чего-то большего, чем крошечный проект, большой xml-config сложно поддерживать.

0 голосов
/ 06 февраля 2012

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

0 голосов
/ 06 февраля 2012

Я бы сказал, что это очень сильно зависит от того, что вы настраиваете.

Если конфигурация может быть или должна быть изменена после развертывания, то в большинстве случаев предпочтительнее использовать XML (или другой текстовый формат).Это может включать в себя конфигурацию сервера Hibernate, конфигурацию Tomcat / Jetty, конфигурацию Log4j и т. Д. Основным преимуществом является гибкость.

Для случаев, когда конфигурация не требует изменений после развертывания, конфигурация с использованием аннотаций является предпочтительной.Слишком много файлов конфигурации также усложняют ваше программное обеспечение, поэтому лучше свести его к минимуму.Хорошими примерами могут служить конфигурации на основе аннотаций: конфигурация отображения bean-компонентов Hibernate, внедрение зависимостей Spring, Guice и т. Д. (Некоторые дают вам оба варианта, но я бы предпочел аннотации здесь).Преимущество - лучшая управляемость и проверка на наличие ошибок во время компиляции (конечно, это зависит от API).

0 голосов
/ 06 февраля 2012

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

...