Spring Inversion of Control (IoC) also known as
Dependency Injection (DI) is a process by which
objects define their dependencies with collaborating objects.
Spring provides a better alternative to using DisposableBean interface.
The attribute destroy-method allows us to specify a no-argument method as
a destruction callback method.
System.out.println("Initializing ApplicationContext");
ApplicationContext factory = new ClassPathXmlApplicationContext("destroy2.xml");
System.out.println("ApplicationContext Initialized");
System.out.println("Accessing first bean");
SimpleDisposableBean2 first = (SimpleDisposableBean2) factory.getBean("first");
System.out.println(first);
System.out.println("Accessing second bean");
SimpleDisposableBean2 second = (SimpleDisposableBean2) factory.getBean("second");
System.out.println(second);
/**
* Register a Shutdown hook for graceful Shutdown.
* Calls the relevant destroy methods on your singleton beans
* so that all resources are released
*/
AbstractApplicationContext abc = (AbstractApplicationContext ) factory;
abc.registerShutdownHook();
}
}
It gives the following output,
Initializing ApplicationContext
ApplicationContext Initialized
Accessing first bean
SimpleDisposableBean2[FIRST]
Accessing second bean
SimpleDisposableBean2[SECOND]
In custom destroy callback : SECOND
In custom destroy callback : null
In custom destroy callback : FIRST
In custom destroy callback : null