Bean Lifecycle Disposable Bean : XML Bean Lifecycle « Spring « Java Tutorial






File: context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="destructive" class="DestructiveBeanI">
        <property name="filePath" value="/tmp"/>
    </bean>

</beans>

File: Main.java

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.Assert;

public class Main {
  public static void main(String[] args) throws Exception {
    XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("context.xml"));
    Runtime.getRuntime().addShutdownHook(new Thread(new ShutdownHook(factory)));
    
  }

}
class ShutdownHook implements Runnable {
  private ConfigurableListableBeanFactory beanFactory;

  public ShutdownHook(ConfigurableListableBeanFactory beanFactory) {
      Assert.notNull(beanFactory, "The 'beanFactory' argument must not be null.");
      this.beanFactory = beanFactory;
  }

  public void run() {
      this.beanFactory.destroySingletons();
  }
}
class DestructiveBeanI implements InitializingBean, DisposableBean {
  public void afterPropertiesSet() throws Exception {
  }

  public void destroy() {
      System.out.println("Destroying Bean");

  }

  @Override
  public String toString() {
      final StringBuilder sb = new StringBuilder();
      sb.append("DestructiveBean");
      return sb.toString();
  }
}
  Download:  Spring-BeanLiftCycleDisposableBean.zip( 2,600 k)








28.7.XML Bean Lifecycle
28.7.1.destroy method
28.7.2.Custom Initialization Method
28.7.3.Bean Liftcycle Initializing
28.7.4.Bean Lifecycle Disposable Bean
28.7.5.Implements Initializing Bean
28.7.6.Implements Disposable Bean