Spring Bean Annotation
Die Spring @Bean Annotation wird auf eine Methode angewendet, um anzugeben, dass sie einen Bean zurückgibt, der vom Spring-Kontext verwaltet wird. Die Spring Bean Annotation wird normalerweise in den Methoden von Configuration-Klassen deklariert. In diesem Fall können Bean-Methoden auf andere @Bean-Methoden in derselben Klasse direkt verweisen, indem sie diese direkt aufrufen.
Spring Bean Beispiel
Nehmen wir an, wir haben eine einfache Klasse wie folgt.
package com.journaldev.spring;
public class MyDAOBean {
@Override
public String toString() {
return "MyDAOBean" + this.hashCode();
}
}
Hier ist eine Configuration-Klasse, in der wir eine @Bean-Methode für die MyDAOBean-Klasse 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 den MyDAOBean-Bean aus dem Spring-Kontext mit dem folgenden Code-Snippet beziehen.
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
//Getting Bean by Class
MyDAOBean myDAOBean = context.getBean(MyDAOBean.class);
Spring Bean-Name
Wir können den @Bean-Namen spezifizieren und ihn verwenden, um die Beans aus dem Spring-Kontext zu beziehen. Nehmen wir an, wir haben eine MyFileSystemBean-Klasse wie folgt definiert:
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 jetzt eine @Bean-Methode in der Konfigurationsklasse:
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"})
public MyFileSystemBean getMyFileSystemBean() {
return new MyFileSystemBean();
}
Wir können diesen Bean aus dem Kontext unter Verwendung des Bean-Namens beziehen.
MyFileSystemBean myFileSystemBean = (MyFileSystemBean) context.getBean("getMyFileSystemBean");
MyFileSystemBean myFileSystemBean1 = (MyFileSystemBean) context.getBean("MyFileSystemBean");
Spring @Bean initMethod und destroyMethod
Wir können auch eine Init-Methode und eine Destroy-Methode für Spring Beans spezifizieren. Diese Methoden werden aufgerufen, wenn der Spring Bean erstellt wird und wenn der Kontext entsprechend geschlossen wird.
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"}, initMethod="init", destroyMethod="destroy")
public MyFileSystemBean getMyFileSystemBean() {
return new MyFileSystemBean();
}
Sie werden bemerken, dass die „init“-Methode aufgerufen wird, wenn wir die Kontext-Refresh-Methode aufrufen und die „destroy“-Methode aufgerufen wird, wenn wir die Kontext-Schließ-Methode aufrufen.
Zusammenfassung
Die Spring @Bean Annotation wird häufig in annotierungsbasierten Spring-Anwendungen verwendet.