Альтернативою налаштування на XML є конфігурація на основі анотацій, яка спирається на метадані байт-коду для підключення компонентів замість оголошень у кутових дужках. Замість використання XML для опису інструменту зв'язування бінів, розробник переносить конфігурацію до самого класу компонента за допомогою анотацій для відповідного оголошення класу, методу або поля. Як згадувалося в підрозділі Приклад: AutowiredAnnotationBeanPostProcessor, використання BeanPostProcessor у поєднанні з анотаціями є поширеним засобом розширення IoC-контейнера Spring. Наприклад, у Spring 2.0 з'явилася можливість примусового використання необхідних властивостей за допомогою анотації @Required. Spring 2.5 дозволив використовувати той самий загальний підхід для управління використанням залежностей з використанням Spring. По суті, анотація @Autowired надає ті ж можливості, які описані в розділі "Автоматичне виявлення та зв'язування взаємодіючих об'єктів", але з більш тонким контролем і ширшим застосуванням. У Spring 2.5 також додано підтримку анотацій JSR-250, таких як @PostConstruct та @PreDestroy. Для Spring 3.0 було додано підтримку анотацій JSR-330 (Впровадження залежностей для Java), що містяться в пакеті javax.inject, таких як @Inject та @Named.
Використання залежностей за допомогою анотацій виконується перед впровадженням залежностей за допомогою XML. Таким чином, конфігурація XML замінює анотації для властивостей через обидва підходи.
Як зазвичай, ви можете зареєструвати постпроцесори у вигляді окремих визначень бінів, але їх також можна зареєструвати і неявно, якщо включити такий тег до XML-конфігурації Spring (зверни увагу на включення простору імен context):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
Елемент <context:annotation-config/> неявно реєструє наступні постпроцесори:
<context:annotation-config/> шукає анотації тільки для бінів у тому ж контексті програми, в якій він визначений. Це означає, що якщо ти помістиш <context:annotation-config/> до WebApplicationContext для DispatcherServlet, він перевірятиме наявність @Autowired бінів тільки в твоїх контролерах, але не в службах.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ