Anotación @Service de Spring

La anotación @Service de Spring es una especialización de la anotación @Component. La anotación de servicio de Spring solo se puede aplicar a clases. Se utiliza para marcar la clase como un proveedor de servicios.

Anotación @Service de Spring

La anotación @Service de Spring se utiliza con clases que proporcionan algunas funcionalidades empresariales. El contexto de Spring detectará automáticamente estas clases cuando se utilice la configuración basada en anotaciones y el escaneo del classpath.

Ejemplo @Service de Spring

Creemos una aplicación de Spring simple donde crearemos una clase de servicio de Spring. Cree un proyecto Maven simple en Eclipse y agregue la siguiente dependencia básica de Spring.

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

Nuestra estructura final del proyecto se verá como en la siguiente imagen. Creemos una clase de servicio.

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

Ten en cuenta que es una clase Java simple que proporciona funcionalidades para sumar y restar dos enteros. Por lo tanto, podemos llamarla un proveedor de servicios. Lo hemos anotado con la anotación @Service para que el contexto de Spring pueda detectarlo automáticamente y podamos obtener su instancia desde el contexto. Creemos una clase principal donde crearemos el contexto de Spring impulsado por anotaciones y obtendremos la instancia de nuestra clase de servicio.

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);
		
		//cerrar el contexto de Spring
		context.close();
	}

}

Simplemente ejecuta la clase como una aplicación Java, producirá la siguiente salida.

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

Si observas nuestra clase MathService, hemos definido el nombre del servicio como “ms”. También podemos obtener la instancia de MathService usando este nombre. La salida seguirá siendo la misma en este caso. Sin embargo, tendremos que usar conversión explícita.

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

Eso es todo para un ejemplo rápido de la anotación @Service de Spring.

Puedes descargar el código del proyecto de ejemplo desde nuestro Repositorio en GitHub.

Referencia: Documento de la API

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