Аннотация @Service в Spring

Аннотация @Service в Spring является специализацией аннотации @Component. Аннотация Spring Service может быть применена только к классам. Она используется для обозначения класса как поставщика услуг.

Аннотация Spring @Service

Аннотация @Service в Spring используется с классами, предоставляющими какие-то бизнес-функциональности. Контекст Spring автоматически обнаружит эти классы при использовании конфигурации на основе аннотаций и сканирования classpath.

Пример использования аннотации Spring @Service

Давайте создадим простое приложение Spring, в котором мы создадим класс службы Spring. Создайте простой проект Maven в Eclipse и добавьте следующую зависимость Spring Core.

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>5.0.6.RELEASE</version>
</dependency>

Наша конечная структура проекта будет выглядеть как на изображении ниже. Давайте создадим класс службы.

package com.journaldev.spring;

import org.springframework.stereotype.Service;

@Service("ms")
public class MathService {

	public int add(int x, int y) {
		return x + y;
	}
	
	public int subtract(int x, int y) {
		return x - y;
	}
}

Обратите внимание, что это простой класс Java, который предоставляет функции для сложения и вычитания двух целых чисел. Так что мы можем назвать его поставщиком услуг. Мы отметили его аннотацией @Service, чтобы контекст Spring мог автоматически обнаружить его, и мы могли получить его экземпляр из контекста. Давайте создадим главный класс, где мы создадим аннотационно-управляемый контекст Spring и получим экземпляр нашего сервисного класса.

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();

		MathService ms = context.getBean(MathService.class);

		int add = ms.add(1, 2);
		System.out.println("Addition of 1 and 2 = " + add);

		int subtract = ms.subtract(2, 1);
		System.out.println("Subtraction of 2 and 1 = " + subtract);
		
		// закрываем контекст Spring
		context.close();
	}

}

Просто выполните класс как приложение Java, и он выдаст следующий вывод.

Jun 05, 2018 3:02:05 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 15:02:05 IST 2018]; root of context hierarchy
Addition of 1 and 2 = 3
Subtraction of 2 and 1 = 1
Jun 05, 2018 3:02:05 PM org.springframework.context.support.AbstractApplicationContext doClose
INFO: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 15:02:05 IST 2018]; root of context hierarchy

Если вы обратите внимание на наш класс MathService, мы определили имя сервиса как “ms”. Мы также можем получить экземпляр MathService, используя это имя. В этом случае вывод будет таким же. Однако нам придется использовать явное приведение типов.

MathService ms = (MathService) context.getBean("ms");

Это все для быстрого примера аннотации Spring @Service.

Вы можете загрузить пример кода проекта из нашего репозитория GitHub.

Ссылка: Документация API

Source:
https://www.digitalocean.com/community/tutorials/spring-service-annotation