Exemple Spring InitializingBean et DisposableBean
Dans Spring,InitializingBean etDisposableBean sont deux interfaces de marqueurs, un moyen utile pour Spring d'effectuer certaines actions lors de l'initialisation et de la destruction du bean.
-
Pour le bean implémenté InitializingBean, il exécutera
afterPropertiesSet()
après que toutes les propriétés du bean aient été définies. -
Pour le bean implémenté DisposableBean, il exécutera
destroy()
après que le conteneur Spring ait libéré le bean.
Exemple
Voici un exemple pour vous montrer comment utiliserInitializingBeanandDisposableBean. Un bean CustomerService pour implémenter l'interface InitializingBean et DisposableBean, et possède une propriété de message.
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"); } }
Fichier: Spring-Customer.xml
Exécuter
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(); } }
LesConfigurableApplicationContext.close() fermeront le contexte de l'application, libérant toutes les ressources et détruisant tous les beans singleton mis en cache. Il est utilisé uniquement à des fins de démonstration de la méthodedestroy()
:)
Sortie
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
La méthode afterPropertiesSet () est appelée, une fois la propriété de message définie; tandis que la méthode destroy () est appelée après le context.close ();
Thoughts…
Je ne recommanderais pas d'utiliser l'interface InitializingBean et DisposableBean, car elle couplera étroitement votre code à Spring. Une meilleure approche devrait être de spécifier les attributsinit-method and destroy-method dans votre fichier de configuration de bean.
Télécharger le code source
Téléchargez-le -Spring-InitializingBean-DisposableBean-Example.zip