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