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.