Spring InitializingBean und DisposableBean-Beispiel

Beispiel für Spring InitializingBean und DisposableBean

In Spring sindInitializingBean undDisposableBean zwei Markierungsschnittstellen. Dies ist eine nützliche Möglichkeit für Spring, bestimmte Aktionen bei der Initialisierung und Zerstörung von Beans auszuführen.

  1. Für die Bean, die InitializingBean implementiert hat, wirdafterPropertiesSet() ausgeführt, nachdem alle Bean-Eigenschaften festgelegt wurden.

  2. Für die von der Bean implementierte DisposableBean wirddestroy() ausgeführt, nachdem der Spring-Container die Bean freigegeben hat.

Beispiel

Hier ist ein Beispiel, das Ihnen zeigt, wie SieInitializingBeanandDisposableBean verwenden. Eine CustomerService-Bean zur Implementierung der Schnittstelle InitializingBean und DisposableBean mit einer Nachrichteneigenschaft.

package com.example.customer.services;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

public class CustomerService implements InitializingBean, DisposableBean
{
    String message;

    public String getMessage() {
      return message;
    }

    public void setMessage(String message) {
      this.message = message;
    }

    public void afterPropertiesSet() throws Exception {
      System.out.println("Init method after properties are set : " + message);
    }

    public void destroy() throws Exception {
      System.out.println("Spring Container is destroy! Customer clean up");
    }

}

Datei: Spring-Customer.xml



       
        
       

Starte es

package com.example.common;

import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.example.customer.services.CustomerService;

public class App
{
    public static void main( String[] args )
    {
        ConfigurableApplicationContext context =
            new ClassPathXmlApplicationContext(new String[] {"Spring-Customer.xml"});

        CustomerService cust = (CustomerService)context.getBean("customerService");

        System.out.println(cust);

        context.close();
    }
}

DieConfigurableApplicationContext.close() schließen den Anwendungskontext, geben alle Ressourcen frei und zerstören alle zwischengespeicherten Singleton-Beans. Es wird nur für den Demo-Zweck vondestroy()verwendet :)

Ausgabe

Init method after properties are set : im property message
com.example.customer.services.CustomerService@47393f
...
INFO: Destroying singletons in org.springframework.beans.factory.
support.DefaultListableBeanFactory@77158a:
defining beans [customerService]; root of factory hierarchy
Spring Container is destroy! Customer clean up

Die afterPropertiesSet () -Methode wird aufgerufen, nachdem die Nachrichteneigenschaft festgelegt wurde. während die destroy () Methode nach dem context.close () aufgerufen wird;

Thoughts…
Ich würde nicht empfehlen, die Schnittstelle InitializingBean und DisposableBean zu verwenden, da dadurch Ihr Code eng mit Spring verbunden wird. Ein besserer Ansatz sollte darin bestehen, dieinit-method and destroy-method-Attribute in Ihrer Bean-Konfigurationsdatei anzugeben.

Quellcode herunterladen