Die Annotation @Bean wird auf eine Methode angewendet, um anzugeben, dass sie ein von Spring-Context zu verwaltendes Bean zurückgibt. Die Spring-Bean-Annotation wird normalerweise in Methoden von Konfigurationsklassen deklariert. In diesem Fall können Bean-Methoden andere @Bean-Methoden in derselben Klasse referenzieren, indem sie sie direkt aufrufen.
Spring @Bean-Beispiel
Angenommen, wir haben eine einfache Klasse wie unten dargestellt.
package com.journaldev.spring;
public class MyDAOBean {
@Override
public String toString() {
return "MyDAOBean"+this.hashCode();
}
}
Hier ist eine Konfigurationsklasse, in der wir eine @Bean-Methode für die Klasse MyDAOBean
definiert haben.
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();
}
}
Wir können das Bean MyDAOBean
aus dem Spring-Kontext mithilfe des folgenden Codeausschnitts erhalten.
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
// Bean nach Klasse erhalten
MyDAOBean myDAOBean = context.getBean(MyDAOBean.class);
Spring Bean-Name
Wir können den @Bean-Namen angeben und ihn verwenden, um sie aus dem Spring-Kontext zu erhalten. Angenommen, wir haben die Klasse MyFileSystemBean
definiert als:
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");
}
}
Definieren Sie nun eine @Bean-Methode in der Konfigurationsklasse:
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"})
public MyFileSystemBean getMyFileSystemBean() {
return new MyFileSystemBean();
}
Wir können diese Bohne aus dem Kontext erhalten, indem wir den Bohnennamen verwenden.
MyFileSystemBean myFileSystemBean = (MyFileSystemBean) context.getBean("getMyFileSystemBean");
MyFileSystemBean myFileSystemBean1 = (MyFileSystemBean) context.getBean("MyFileSystemBean");
Spring @Bean-initMethod und destroyMethod
können ebenfalls spezifiziert werden. Diese Methoden werden aufgerufen, wenn die Spring-Bohne erstellt wird und wenn der Kontext geschlossen wird, respectively.
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"}, initMethod="init", destroyMethod="destroy")
public MyFileSystemBean getMyFileSystemBean() {
return new MyFileSystemBean();
}
Sie werden feststellen, dass die „init“-Methode aufgerufen wird, wenn wir die Kontext-refresh
-Methode aufrufen, und die „destroy“-Methode wird aufgerufen, wenn wir die Kontext-close
-Methode aufrufen.
Zusammenfassung
Die Spring @Bean-Annotation wird in annotationsgesteuerten Spring-Anwendungen weit verbreitet verwendet.
Sie können das vollständige Spring-Projekt aus unserem GitHub-Repository herunterladen.
Source:
https://www.digitalocean.com/community/tutorials/spring-bean-annotation