«Аннотации являются более гибкими с точки зрения того, как вы их используете, с опциями того, должна ли информация аннотации включаться в файлы классов, выводимые компилятором, и быть доступной приложению во время выполнения»
Он более гибкий, чем XDoclet, потому что:
- может использоваться из исходного кода (например, XDoclet)
- it можно использовать во время выполнения , когда у вас есть только байт-код, а не исходный код (в отличие от XDoclet)
Хотя аннотации идеальны для метаданных, относящихся к конкретному компоненту, они не очень подходят для метаданных с многокомпонентным применением.
Аннотации (например, XDoclet) имеют одну интересную особенность, в отличие от внешнего XML, например:
Аннотации живут в коде , поэтому для них естественно применять код, для которого они определены. Вам не нужно указывать (используя некоторый сложный синтаксис), к какому фрагменту кода они применяются. Примеры:
- если для метода определена аннотация, то он естественным образом применяется к этому методу
- если для поля определена аннотация, она естественным образом применяется к этому полю
- если для класса определена аннотация, она естественным образом применяется к этому классу
- если для пакета определена аннотация, она естественным образом применяется к этому пакету
Если вы хотите иметь то же самое во внешнем XML-файле, вы должны использовать сложный синтаксис для идентификации фрагмента кода, на который вы ссылаетесь. Так что их очень легко наносить.
Кроме того, в случае рефакторинга кода (например, переименования), аннотации продолжают нормально работать , в то время как внешний xml необходимо будет изменить, чтобы он указывал на новый класс или имя метода.
Я не верю, что в веб-приложении большинство вещей являются многокомпонентными.
- Если вы определили персистентность (в базе данных) сущности, как, например, в таблице, в которой этот класс должен быть сохранен, это не является чем-то глобальным для всех сущностей, это влияет только на текущую сущность.
- то же самое для многих других примеров ...