Начиная с Spring 2.5 стало возможным настраивать внедрение зависимостей с помощью аннотаций . Таким образом, вместо использования XML для описания связывания bean-компонентов, вы можете переместить конфигурацию bean-компонента в сам класс компонента, используя аннотации к соответствующему классу, методу или объявлению поля.
Добавление аннотации выполняется до внедрения XML. Таким образом, последняя конфигурация переопределяет первую для свойств, связанных через оба подхода.
По умолчанию проводка аннотации в контейнере Spring не включена. Поэтому, прежде чем мы сможем использовать проводку на основе аннотаций, нам нужно включить ее в нашем файле конфигурации Spring. Поэтому рассмотрите следующий файл конфигурации на случай, если вы хотите использовать какие-либо аннотации в приложении Spring.
<?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 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config/> <!-- bean definitions go here --> </beans>
Как только <context: annotation-config /> настроен, вы можете начать комментировать свой код, чтобы указать, что Spring должен автоматически связывать значения в свойствах, методах и конструкторах. Давайте посмотрим на несколько важных аннотаций, чтобы понять, как они работают —
Аннотация @Required применяется к методам установки свойств бина.
Аннотация @Autowired может применяться к методам установки свойств бина, методам без установки, конструктору и свойствам.
Аннотацию @Qualifier вместе с @Autowired можно использовать для устранения путаницы, указав, какой именно компонент будет подключен.
Spring поддерживает аннотации на основе JSR-250, которые включают аннотации @Resource, @PostConstruct и @PreDestroy.