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.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: