Альтернативою налаштування на 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
бінів тільки в твоїх
контролерах, але не в службах.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ