Spring @Service è una specializzazione dell’annotazione @Component. L’annotazione Spring Service può essere applicata solo alle classi. Viene utilizzata per contrassegnare la classe come un fornitore di servizi.
Spring @Service Annotation
Spring @Service viene utilizzata con classi che forniscono alcune funzionalità aziendali. Il contesto Spring rileverà automaticamente queste classi quando viene utilizzata la configurazione basata su annotazioni e la scansione del classpath.
Spring @Service Esempio
Creiamo una semplice applicazione Spring in cui creeremo una classe di servizio Spring. Crea un progetto Maven semplice in Eclipse e aggiungi la seguente dipendenza principale di Spring.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
La struttura finale del nostro progetto avrà un aspetto simile all’immagine sottostante. Creiamo una classe di servizio.
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;
}
}
Nota che si tratta di una semplice classe Java che fornisce funzionalità per aggiungere e sottrarre due interi. Quindi possiamo definirla un fornitore di servizi. L’abbiamo annotata con l’annotazione @Service in modo che il contesto di Spring possa rilevarla automaticamente e possiamo ottenere la sua istanza dal contesto. Creiamo una classe principale dove creeremo il contesto di Spring basato su annotazioni e otterremo l’istanza della nostra classe di servizio.
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);
//chiudi il contesto di Spring
context.close();
}
}
Esegui semplicemente la classe come applicazione Java, produrrà l’output seguente.
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
Se noti la nostra classe MathService, abbiamo definito il nome del servizio come “ms”. Possiamo ottenere l’istanza di MathService
utilizzando anche questo nome. L’output rimarrà lo stesso in questo caso. Tuttavia, dovremo utilizzare il cast esplicito.
MathService ms = (MathService) context.getBean("ms");
Questo è tutto per un rapido esempio dell’annotazione Spring @Service.
Puoi scaricare il codice del progetto di esempio dal nostro Repository GitHub.
Riferimento: API Doc
Source:
https://www.digitalocean.com/community/tutorials/spring-service-annotation