Поиск по сайту:

Весна @Компонент


Аннотация Spring Component используется для обозначения класса как компонента. Это означает внедрение зависимостей при использовании конфигурации на основе аннотаций и сканирования путей к классам.

Пружинный компонент

С точки зрения непрофессионала, компонент отвечает за некоторые операции. Платформа Spring предоставляет три других специальных аннотации, которые можно использовать при маркировке класса как компонента.

  1. Service: указывает, что класс предоставляет некоторые услуги. Наши служебные классы можно пометить как классы обслуживания.
  2. Репозиторий: эта аннотация указывает, что класс работает с операциями CRUD, обычно он используется с реализациями DAO, которые работают с таблицами базы данных.
  3. Контроллер: в основном используется с веб-службами 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