Spring @Component

L’annotazione Component di Spring è utilizzata per denotare una classe come Component. Ciò significa che il framework Spring rileverà automaticamente queste classi per l’iniezione delle dipendenze quando si utilizza la configurazione basata su annotazioni e la scansione del classpath.

Componente Spring

In termini laici, un Componente è responsabile di alcune operazioni. Il framework Spring fornisce altre tre annotazioni specifiche da utilizzare quando si contrassegna una classe come Component.

  1. Service: Indica che la classe fornisce alcuni servizi. Le nostre classi di utilità possono essere contrassegnate come classi di servizio.
  2. Repository: Questa annotazione indica che la classe si occupa delle operazioni CRUD, di solito è utilizzata con le implementazioni di DAO che gestiscono le tabelle del database.
  3. Controller: Utilizzato principalmente con applicazioni web o servizi web REST per specificare che la classe è un controller frontale e responsabile di gestire la richiesta dell’utente e restituire una risposta appropriata.

Si noti che tutte queste quattro annotazioni sono nel pacchetto org.springframework.stereotype e fanno parte del jar spring-context. La maggior parte delle volte le nostre classi dei componenti rientreranno in una delle sue tre annotazioni specializzate, quindi potresti non utilizzare molto l’annotazione @Component.

Esempio di componente Spring

Creiamo un’applicazione Spring Maven molto semplice per mostrare l’utilizzo dell’annotazione Spring Component e come Spring la rileva con la configurazione basata su annotazioni e la scansione del classpath. Crea un progetto Maven e aggiungi la seguente dipendenza di Spring Core.

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

Questo è tutto ciò di cui abbiamo bisogno per ottenere le funzionalità principali del framework Spring. Creiamo una semplice classe di componente e segnamola con l’annotazione @Component.

package com.journaldev.spring;

import org.springframework.stereotype.Component;

@Component
public class MathComponent {

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

Ora possiamo creare un contesto Spring basato su annotazioni e ottenere il bean MathComponent da esso.

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

}

Esegui la classe sopra come un’applicazione Java normale e dovresti ottenere il seguente output nella 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

Hai capito la potenza di Spring, non abbiamo dovuto fare nulla per iniettare il nostro componente nel contesto di Spring. L’immagine sottostante mostra la struttura della directory del nostro progetto di esempio di componente Spring. Possiamo anche specificare il nome del componente e quindi ottenerlo dal contesto di Spring utilizzando lo stesso nome.

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

Nonostante abbia utilizzato l’annotazione @Component con MathComponent, in realtà è una classe di servizio e dovremmo utilizzare l’annotazione @Service. Il risultato sarà comunque lo stesso.

Puoi controllare il progetto dal nostro Repository GitHub.

Riferimento: Documentazione API

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