Frühling @Service Annotation

Frühling @Service-Annotation ist eine Spezialisierung der @Component-Annotation. Die Spring-Service-Annotation kann nur auf Klassen angewendet werden. Sie wird verwendet, um die Klasse als Dienstanbieter zu kennzeichnen.

Spring @Service-Annotation

Die Spring @Service-Annotation wird bei Klassen verwendet, die einige Geschäftsfunktionalitäten bereitstellen. Der Spring-Kontext erkennt diese Klassen automatisch, wenn die annotationsbasierte Konfiguration und das Scannen des Klassenpfads verwendet werden.

Spring @Service-Beispiel

Erstellen wir eine einfache Spring-Anwendung, in der wir eine Spring-Serviceklasse erstellen. Erstellen Sie ein einfaches Maven-Projekt in Eclipse und fügen Sie die folgende Spring-Core-Abhängigkeit hinzu.

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

Unsere endgültige Projektstruktur wird wie das untenstehende Bild aussehen. Erstellen wir eine Serviceklasse.

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;
	}
}

Beachten Sie, dass es sich um eine einfache Java-Klasse handelt, die Funktionalitäten zum Hinzufügen und Subtrahieren von zwei Ganzzahlen bereitstellt. Daher können wir sie als Dienstanbieter bezeichnen. Wir haben es mit der @Service-Annotation versehen, damit der Spring-Kontext es automatisch erkennen und wir dessen Instanz aus dem Kontext erhalten können. Erstellen wir eine Hauptklasse, in der wir den Annotation-gesteuerten Spring-Kontext erstellen und die Instanz unserer Serviceklasse erhalten.

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);
		
		// Schließen Sie den Spring-Kontext
		context.close();
	}

}

Führen Sie die Klasse einfach als Java-Anwendung aus, sie wird folgende Ausgabe erzeugen.

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

Wenn Sie unsere MathService-Klasse betrachten, haben wir den Dienstnamen als „ms“ definiert. Wir können die Instanz von MathService auch unter diesem Namen erhalten. Die Ausgabe bleibt in diesem Fall gleich. Allerdings müssen wir explizites Casting verwenden.

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

Das war alles für ein schnelles Beispiel der Spring @Service-Annotation.

Sie können den Beispielprojektcode von unserem GitHub-Repository herunterladen.

Referenz: API-Dokumentation

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