Spring @Service Annotation
Die Spring @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 markieren.
Die Spring @Service Annotation wird bei Klassen verwendet, die bestimmte Geschäftsfunktionalitäten bereitstellen. Der Spring-Kontext erkennt diese Klassen automatisch, wenn die konfigurationsbasierte und klassenpfad-basierte Scannung verwendet wird.
Spring @Service Beispiel
Lassen Sie uns eine einfache Spring-Anwendung erstellen, in der wir eine Spring-Serviceklasse erstellen. Erstellen Sie ein einfaches Maven-Projekt in Eclipse und fügen Sie 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 folgende Bild aussehen.
Lassen Sie uns eine Service-Klasse erstellen.
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 Addieren und Subtrahieren von zwei Ganzzahlen bereitstellt. Wir können sie also als Dienstanbieter bezeichnen. Wir haben sie mit der @Service Annotation versehen, damit der Spring-Kontext sie automatisch erkennen kann und wir ihre Instanz aus dem Kontext erhalten können. Lassen Sie uns eine Hauptklasse erstellen, in der wir den anmerkungsgesteuerten 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 von 1 und 2 = " + add);
int subtract = ms.subtract(2, 1);
System.out.println("Subtraktion von 2 und 1 = " + subtract);
//schließen des Spring-Kontextes
context.close();
}
}
Führen Sie einfach die Klasse als eine Java-Anwendung aus, es wird folgende Ausgabe produzieren.
Jun 05, 2018 3:02:05 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Aktualisierung org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: Startdatum [Di. Jun 05 15:02:05 IST 2018]; Wurzel der Kontexthierarchie
Addition von 1 und 2 = 3
Subtraktion von 2 und 1 = 1
Jun 05, 2018 3:02:05 PM org.springframework.context.support.AbstractApplicationContext doClose
INFO: Schließen org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: Startdatum [Di. Jun 05 15:02:05 IST 2018]; Wurzel der Kontexthierarchie
Wenn Sie unsere MathService-Klasse beachten, haben wir den Dienstnamen als „ms“ definiert. Wir können die Instanz von MathService auch mit diesem Namen erhalten. Das Ergebnis bleibt in diesem Fall gleich. Allerdings müssen wir explizites Casting verwenden.
MathService ms = (MathService) context.getBean("ms");
Fazit
Das ist alles für ein schnelles Beispiel der Spring @Service Annotation.