Frühling @Bean Annotation

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