Lente @Service Annotation

De annotatie @Service in Spring is een specialisatie van de annotatie @Component. De Spring Service-annotatie kan alleen worden toegepast op klassen. Het wordt gebruikt om de klasse aan te duiden als een serviceprovider.

Spring @Service Annotatie

De annotatie @Service in Spring wordt gebruikt bij klassen die bepaalde bedrijfsfunctionaliteiten bieden. De Spring-context zal deze klassen automatisch detecteren wanneer annotatiegebaseerde configuratie en classpath-scanning worden gebruikt.

Spring @Service Voorbeeld

Laten we een eenvoudige Spring-toepassing maken waarbij we een Spring-serviceklasse zullen maken. Maak een eenvoudig Maven-project in Eclipse en voeg de volgende Spring-core-afhankelijkheid toe.

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

Onze uiteindelijke projectstructuur zal eruitzien zoals in onderstaande afbeelding. Laten we een serviceklasse maken.

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

Let op dat het een eenvoudige Java-klasse is die functionaliteiten biedt om twee gehele getallen op te tellen en af te trekken. Dus we kunnen het een serviceprovider noemen. We hebben het geannoteerd met de @Service-annotatie zodat de Spring-context het automatisch kan detecteren en we het exemplaar ervan uit de context kunnen krijgen. Laten we een hoofdklasse maken waar we de op annotaties gebaseerde Spring-context maken om het exemplaar van onze serviceklasse te krijgen.

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

}

Voer gewoon de klasse uit als een Java-toepassing, het zal de volgende uitvoer produceren.

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

Als je onze MathService-klasse opmerkt, hebben we de servicenaam gedefinieerd als “ms”. We kunnen het exemplaar van MathService ook met deze naam krijgen. De uitvoer blijft in dit geval hetzelfde. We moeten echter wel expliciet casten.

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

Dat is alles voor een snel voorbeeld van de Spring @Service-annotatie.

Je kunt het voorbeeldproject downloaden van onze GitHub Repository.

Referentie: API-doc

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