Spring Java Tutorial

File: context.xml


       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">
    
        
    

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();
  }
}