Главная » Spring » Аннотирование  компонентов для  автоматического  определения Spring

0

По умолчанию элемент <context:component-scan> требует выполнить поиск классов, отмеченных одной из нескольких специальных ан- нотаций:

# @Component – универсальная аннотация, указывающая, что класс

является компонентом Spring;

# @Controller   –  указывает,  что  класс  определяет  контроллер Spring MVC;

# @Repository – указывает, что класс определяет репозиторий дан-

ных;

# @Service – указывает, что класс определяет службу;

# любая пользовательская аннотация, определенная с помощью аннотации @Component.

Для примера предположим, что контекст нашего приложения со- держит только компоненты eddie и guitar. В этом случае из XML- файла конфигурации можно удалить явные объявления <bean>, доба- вив в него элемент <context:component-scan> и пометив классы Instru- mentalist и Guitar аннотацией @Component.

Сначала добавим аннотацию @Component в класс Guitar:

package com.springinaction.springidol;

import   org.springframework.stereotype.Component;

@Component

public  class  Guitar  implements  Instrument  { public  void  play()  {

System.out.println("Strum  strum  strum");

}

}

Когда фреймворк будет просматривать пакет com.springinaction. springidol, он обнаружит, что класс Guitar отмечен аннотацией @Component, и автоматически зарегистрирует его как компонент. По умолчанию идентификатор компонента генерируется из имени класса, где пер- вый символ имени замещается этим же символом в нижнем регистре. В случае с классом Guitar компонент получит идентификатор guitar.

Теперь аннотируем класс Instrumentalist:

package com.springinaction.springidol;

import  org.springframework.beans.factory.annotation.Autowired; import   org.springframework.stereotype.Component;

@Component("eddie")

public  class  Instrumentalist  implements  Performer  {

// …

}

В данном случае желаемый идентификатор компонента был пере- дан аннотации @Component в виде параметра. По умолчанию компо- нент получил бы идентификатор instrumentalist, но, чтобы сохранить непротиворечивость с предыдущими примерами, для него явно был определен идентификатор eddie.

Автоматическое определение на основе аннотаций – это лишь одна из возможностей элемента <context:component-scan>. Посмотрим далее, как настроить элемент <context:component-scan>, чтобы он вы- полнял поиск кандидатов в компоненты по другим признакам.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии