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.
-
Für die Bean, die InitializingBean implementiert hat, wird
afterPropertiesSet()ausgeführt, nachdem alle Bean-Eigenschaften festgelegt wurden. -
Für die von der Bean implementierte DisposableBean wird
destroy()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
Laden Sie es herunter -Spring-InitializingBean-DisposableBean-Example.zip