Процессоры аннотаций Java: использование и приложения - PullRequest
3 голосов
/ 26 сентября 2011

Я относительно новичок в разработке Java EE, и, хотя я понимаю, что такое аннотации и как их использовать, мне трудно "видеть лес сквозь деревья", когда дело доходит до понимания, почему кому-то понадобитсяписать и обрабатывать свои собственные аннотации.

При каких обстоятельствах вам даже понадобится пользовательская аннотация?

Я уверен, что они как-то важны, я просто непо каким-то причинам вижу их полезность.

Спасибо за любые толчки в правильном направлении!

Ответы [ 4 ]

3 голосов
/ 26 сентября 2011

Существует множество способов использования пользовательских аннотаций.Вы можете подумать, что трудно найти причину, по которой мы его создадим, потому что многие были определены в других рамках.Чтобы в основном ответить на свой собственный вопрос, вам следует спросить: «Что бы произошло, если бы этих фреймворков не существовало, нужно ли мне создавать свое собственное использование аннотаций?»Вероятный ответ будет да.Ниже приведены некоторые из нескольких примеров:

  • Если JAX-RS не существует, вы, вероятно, подумаете, как использовать аннотации для обозначения операции REST для метода, такого как описанный здесь
  • Если JUnit не реализовал аннотацию для обозначения метода Test, как в этой статье , вы можете подумать сделать то же самое
  • Если Spring не имеет 'Внедрение валидации, это то, что вы могли бы придумать, например, здесь
  • И если бы сама Java не придумала аннотации для документации, вы, вероятно, использовали бы свой собственныйпользовательские аннотации описаны здесь

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

1 голос
/ 26 сентября 2011

Есть некоторые связанные обсуждения по StackOverflow, например, здесь .

Проще говоря: всякий раз, когда вы реализуете свою собственную структуру, которая - так или иначе - "склеивает" код вместе, обогащает код некоторой «мета» -информацией, которую вы обрабатываете во время сборки (или запуска) aso

Некоторые известные примеры включают: внедрение зависимостей, объектно-реляционное отображение, отражение, документацию и т. д..

0 голосов
/ 26 сентября 2011

ИМХО, это одна из лучших вещей, которую вы можете использовать в Java, и они спасают меня целую вечность.Я приведу вам пример: несколько дней назад я писал приложение для обработки изображений.Все фильтры расширили базовый класс с именем Filter, и многие из них имели такие свойства, как контрастность, яркость и т. Д. Теперь каждое свойство будет иметь значение по умолчанию, диапазон с min и max, имя, подходящее для графического интерфейса.Кроме того, в фильтрах есть свойства, которые я хотел, чтобы графический интерфейс предоставлял через элементы управления, а другие - нет.Поэтому я создал @FilterPropertyAnnotation, которую вы бы использовали следующим образом:

...
@FilterAnnotation(name = "Image contrast", default = 0.0D, min = -100D, max = 100D)
public double getContrast(){
...
}

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

Аннотации для меня - лучшая вещь в Java.

0 голосов
/ 26 сентября 2011

Существует множество причин, но они, очевидно, зависят от конкретного приложения.

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

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

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

...