Annotation @Bean de Spring

La Annotation @Bean de Spring est appliquée sur une méthode pour spécifier qu’elle renvoie un bean à gérer par le contexte Spring. La Annotation Spring Bean est généralement déclarée dans des méthodes de classes de configuration. Dans ce cas, les méthodes de bean peuvent faire référence à d’autres méthodes @Bean dans la même classe en les appelant directement.

Exemple de @Bean Spring

Supposons que nous ayons une classe simple comme ci-dessous.

package com.journaldev.spring;

public class MyDAOBean {

	@Override
	public String toString() {
		return "MyDAOBean"+this.hashCode();
	}
}

Voici une classe de configuration où nous avons défini une méthode @Bean pour la classe MyDAOBean.

package com.journaldev.spring;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyAppConfiguration {

	@Bean
	public MyDAOBean getMyDAOBean() {
		return new MyDAOBean();
	}
}

Nous pouvons obtenir le bean MyDAOBean du contexte Spring en utilisant le code ci-dessous.

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
		
//Obtenir le Bean par classe
MyDAOBean myDAOBean = context.getBean(MyDAOBean.class);

Nom du Bean Spring

Nous pouvons spécifier le nom de la @Bean et l’utiliser pour les obtenir du contexte Spring. Supposons que nous ayons la classe MyFileSystemBean définie comme suit:

package com.journaldev.spring;

public class MyFileSystemBean {

	@Override
	public String toString() {
		return "MyFileSystemBean"+this.hashCode();
	}
	
	public void init() {
		System.out.println("init method called");
	}
	
	public void destroy() {
		System.out.println("destroy method called");
	}
}

Définissez maintenant une méthode @Bean dans la classe de configuration:

@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"})
public MyFileSystemBean getMyFileSystemBean() {
	return new MyFileSystemBean();
}

Nous pouvons obtenir ce bean à partir du contexte en utilisant le nom du bean.

MyFileSystemBean myFileSystemBean = (MyFileSystemBean) context.getBean("getMyFileSystemBean");

MyFileSystemBean myFileSystemBean1 = (MyFileSystemBean) context.getBean("MyFileSystemBean");

Spring@Bean initMethod et destroyMethod

Nous pouvons également spécifier la méthode d’initialisation et la méthode de destruction du bean Spring. Ces méthodes sont appelées lors de la création du bean Spring et lors de la fermeture du contexte respectivement.

@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"}, initMethod="init", destroyMethod="destroy")
public MyFileSystemBean getMyFileSystemBean() {
	return new MyFileSystemBean();
}

Vous remarquerez que la méthode « init » est appelée lorsque nous invoquons la méthode refresh du contexte et que la méthode « destroy » est appelée lorsque nous invoquons la méthode close du contexte.

Résumé

L’annotation Spring @Bean est largement utilisée dans les applications Spring pilotées par annotation.

Vous pouvez télécharger le projet Spring complet depuis notre Dépôt GitHub.

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