Подтвердить что ты не робот

Как аннотации работают внутри Java или на любом другом языке программирования?

Я с трудом понимаю важность и преимущества аннотаций и поэтому имею два вопроса относительно них:

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

Понадобился бы плюсы и минусы сравнения с XML-конфигурацией с примером, чтобы мне было намного лучше понять.

С уважением.

4b9b3361

Ответ 1

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

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

Например, если вы используете аннотации Hibernate, вы связываете объекты модели с Hibernate. Если вы решите переключиться на другую структуру, вам придется вырвать аннотации Hibernate из кода.

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

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

Ответ 2

Для вашего первого вопроса,

Лично я чувствую, что есть два критерия

  • Могут ли аннотации упростить метаданные?

    Если аннотации не уменьшают количество метаданных, которые вы должны предоставить (в большинстве случаев они это делают), вы не должны использовать аннотацию.

  • Можно ли изменить поведение метаданных в приложении?

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

Для вашего второго вопроса


Важные ссылки:

Ответ 3

Чтобы ответить на первый вопрос, ИМО является наибольшей выгодой для интеграции компилятора. Я могу написать обработчик аннотации, который может проверить некоторые семантики, связанные с применением аннотации. Такая проверка времени компиляции невозможна (или, по крайней мере, была бы сложнее), если бы одна и та же информация была частью XML-документа.

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