Реализуются ли аннотации в целом с помощью АОП и могут ли они «делать» инъекцию зависимости? - PullRequest
2 голосов
/ 24 мая 2011

Как реализованы аннотации в Spring Framework? Реализуются ли они с помощью внедрения зависимостей или аспектно-ориентированного программирования?

Я думал, что они используют AOP, ну, потому что что-то аннотированное будет делать то, что указано где-то еще. С другой стороны, что-то вроде @Autowired @Qualifier("beanID") IS Dependency Injection - ну, может, аннотации основаны на AOP и могут реализовать Depedency Injection? Это правильно?

Я просто думал об этом, потому что я читал об основных частях весны: ди и аоп и мне стало интересно, к чему принадлежат аннотации.

Ответы [ 4 ]

6 голосов
/ 24 мая 2011

Аннотации не делают ничего, код может что-то делать с Аннотациями, это огромная разница.

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

По сути, есть три способа работы с аннотациями (может быть и больше, но я знаю три):

Spring использует Reflection для чтения значений аннотаций, а затем либо вводит зависимости, либо добавляет советы AOP (и многие другие).Но если вы используете статическую компиляцию AspectJ с Spring, некоторые из тех же аннотаций используются в pointcuts.

0 голосов
/ 03 июня 2011

Их можно сортировать - нажмите на ссылку под содержимым, чтобы перейти к электронной таблице Google.

Это позволит вам отсортировать их.

Кстати, теперь существует более 500 аннотаций (недавно добавлен Hibernate 3.)1013 * Описание использования аннотации

0 голосов
/ 25 мая 2011

Некоторые аннотации JSR-250 распознаются в Spring, и создается динамический прокси, такой как @PostConstruct & @PreDestroy.Это делается во время запуска контейнера.Аннотации типа DI обнаруживаются директивами контекста, такими как и.Так как DI происходит до постобработки бина, прокси не нужен.

Аннотации в проектах Spring (более 470) - http://gordondickens.com/wordpress/2011/05/20/annotation-reference-for-spring-projects/

0 голосов
/ 24 мая 2011

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

Чтобы выполнить «работу», никогда не достаточно аннотировать ваш код (так как никогда не достаточно написать дескриптор контекста приложения XML. Вам нужен какой-то фабричный / прикладной контекст компонента, способный читать эти метаданные и делай все, что требуется.

...