Весна @Компонент
Аннотация Spring Component используется для обозначения класса как компонента. Это означает внедрение зависимостей при использовании конфигурации на основе аннотаций и сканирования путей к классам.
Пружинный компонент
С точки зрения непрофессионала, компонент отвечает за некоторые операции. Платформа Spring предоставляет три других специальных аннотации, которые можно использовать при маркировке класса как компонента.
Service
: указывает, что класс предоставляет некоторые услуги. Наши служебные классы можно пометить как классы обслуживания.Репозиторий
: эта аннотация указывает, что класс работает с операциями CRUD, обычно он используется с реализациями DAO, которые работают с таблицами базы данных.Контроллер
: в основном используется с веб-службами REST, чтобы указать, что класс является передним контроллером и отвечает за обработку запроса пользователя и возврат соответствующего ответа.
Обратите внимание, что все эти четыре аннотации находятся в пакете org.springframework.stereotype
и являются частью jar-файла spring-context
. Большую часть времени наши классы компонентов будут подпадать под одну из трех специализированных аннотаций, поэтому вы не можете часто использовать аннотацию @Component
.
Пример компонента Spring
Давайте создадим очень простое приложение Spring maven, чтобы продемонстрировать использование аннотаций компонентов Spring и то, как Spring автоматически определяет их с помощью конфигурации на основе аннотаций и сканирования путей к классам. Создайте проект maven и добавьте следующую зависимость ядра Spring.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
Это все, что нам нужно, чтобы получить основные функции Spring Framework. Давайте создадим простой класс компонента и пометим его аннотацией @Component
.
package com.journaldev.spring;
import org.springframework.stereotype.Component;
@Component
public class MathComponent {
public int add(int x, int y) {
return x + y;
}
}
Теперь мы можем создать контекст Spring на основе аннотаций и получить из него bean-компонент MathComponent
.
package com.journaldev.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class SpringMainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
MathComponent ms = context.getBean(MathComponent.class);
int result = ms.add(1, 2);
System.out.println("Addition of 1 and 2 = " + result);
context.close();
}
}
Просто запустите указанный выше класс как обычное Java-приложение, и вы должны получить следующий вывод в консоли.
Jun 05, 2018 12:49:26 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 12:49:26 IST 2018]; root of context hierarchy
Addition of 1 and 2 = 3
Jun 05, 2018 12:49:26 PM org.springframework.context.support.AbstractApplicationContext doClose
INFO: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 12:49:26 IST 2018]; root of context hierarchy
@Component("mc")
public class MathComponent {
}
MathComponent ms = (MathComponent) context.getBean("mc");
Хотя я использовал аннотацию @Component
с MathComponent, на самом деле это сервисный класс, и мы должны использовать аннотацию @Service
. Результат все равно будет тот же.
Вы можете проверить проект в нашем репозитории GitHub.
Ссылка: документ API