Spring @Component

L’annotation Spring Component est utilisée pour indiquer qu’une classe est un composant. Cela signifie que le cadre Spring détectera automatiquement ces classes pour l’injection de dépendances lorsque la configuration basée sur les annotations et la recherche dans le chemin de classe sont utilisées.

Composant Spring

En termes simples, un composant est responsable de certaines opérations. Le cadre Spring fournit trois autres annotations spécifiques à utiliser lors du marquage d’une classe en tant que composant.

  1. Service : Indique que la classe fournit certains services. Nos classes utilitaires peuvent être marquées comme des classes de service.
  2. Repository : Cette annotation indique que la classe traite des opérations CRUD, elle est généralement utilisée avec des implémentations de DAO qui traitent des tables de base de données.
  3. Controller : Principalement utilisé avec des applications web ou des services web REST pour spécifier que la classe est un contrôleur frontal et responsable de la gestion de la demande utilisateur et du retour de la réponse appropriée.

Notez que toutes ces quatre annotations se trouvent dans le package org.springframework.stereotype et font partie du fichier JAR spring-context. La plupart du temps, nos classes de composants tomberont sous l’une de ses trois annotations spécialisées, vous n’utiliserez donc peut-être pas beaucoup l’annotation @Component.

Exemple de composant Spring

Créons une application Spring Maven très simple pour illustrer l’utilisation de l’annotation Spring Component et comment Spring la détecte avec une configuration basée sur les annotations et une analyse de chemin de classe. Créez un projet Maven et ajoutez la dépendance de base de Spring suivante.

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

C’est tout ce dont nous avons besoin pour obtenir les fonctionnalités principales du framework Spring. Créons maintenant une classe de composant simple et marquons-la avec l’annotation @Component.

package com.journaldev.spring;

import org.springframework.stereotype.Component;

@Component
public class MathComponent {

	public int add(int x, int y) {
		return x + y;
	}
}

Maintenant, nous pouvons créer un contexte Spring basé sur les annotations et obtenir le bean MathComponent à partir de celui-ci.

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();

		MathComponent ms = context.getBean(MathComponent.class);

		int result = ms.add(1, 2);
		System.out.println("Addition of 1 and 2 = " + result);

		context.close();
	}

}

Exécutez simplement la classe ci-dessus comme une application Java normale et vous devriez obtenir la sortie suivante dans la console.

Jun 05, 2018 12:49:26 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 12:49:26 IST 2018]; root of context hierarchy
Addition of 1 and 2 = 3
Jun 05, 2018 12:49:26 PM org.springframework.context.support.AbstractApplicationContext doClose
INFO: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 12:49:26 IST 2018]; root of context hierarchy

Avez-vous réalisé la puissance de Spring? Nous n’avons rien eu à faire pour injecter notre composant dans le contexte Spring. L’image ci-dessous montre la structure du répertoire de notre projet d’exemple de composant Spring. Nous pouvons également spécifier le nom du composant, puis l’obtenir du contexte Spring en utilisant le même nom.

@Component("mc")
public class MathComponent {
}
MathComponent ms = (MathComponent) context.getBean("mc");

Bien que j’aie utilisé l’annotation @Component avec MathComponent, c’est en fait une classe de service et nous devrions utiliser l’annotation @Service. Le résultat sera toujours le même.

Vous pouvez consulter le projet depuis notre Dépôt GitHub.

Référence : Documentation de l’API

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