Free Data Structures and Algorithms Course

Subscribe below and get all best seller courses for free !!!


Subscribe to all free courses

How to use InitializingBean and DisposableBean interface for initializing and destroying a bean in Spring Framework ?.

Program to demonstrate how to use InitializingBean and DisposableBean interface for initializing and destroying a bean in Spring Framework

Step 1 - Create a POJO class here its having getters, setters, constructor and implementing two interfaces InitializingBean and DisposableBean, along with its unimplemented methods as afterPropertiesSet() and destroy()

package com.hubberspot.spring.InitDestroy;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

// Create a POJO class Employee which implements
// two interfaces by name InitializingBean and DisposableBean
// these interfaces has two methods as : afterPropertiesSet() and 
// destroy(). 
public class Employee implements InitializingBean, DisposableBean{

 private String name;
 private int age;

 public Employee() {


 public String getName() {
  return name;

 public void setName(String name) { = name;

 public int getAge() {
  return age;

 public void setAge(int age) {
  this.age = age;

 // This method is called to provide some initialization to 
 // bean by Spring Framework container
 public void afterPropertiesSet() throws Exception {  
  System.out.println("Initializing the Employee bean ...");  

 // This method is called to destroy a bean  
 // by Spring Framework container
 public void destroy() throws Exception {
  System.out.println("Destroying the Employee bean ...");


Step 2 - Create a Spring Configuration file having beans


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""

 <bean id="employee" class="com.hubberspot.spring.InitDestroy.Employee">

  <property name="name" value="Jonty" />
  <property name="age" value="28" />


Step 3 - Create a test class here its having AbstractApplicationContext class for providing registerShutdownHook method to execute destroy method.

package com.hubberspot.spring.InitDestroy;


public class Test {

 public static void main(String[] args) {

  // ApplicationContext is a Spring interface which 
  // provides with the configuration for an application. 
  // It provides us with all the methods that BeanFactory 
  // provides. It loads the file resources in a older 
  // and generic manner. It helps us to publish events to the
  // listener registered to it. It also provides quick support
  // for internationalization. It provides us with the object 
  // requested, it reads the configuration file and provides
  // us with the necessary object required.
  // We are using concrete implementation of ApplicationContext
  // here called as ClassPathXmlApplicationContext because this 
  // bean factory reads the xml file placed in the classpath of 
  // our application. We provide ClassPathXmlApplicationContext
  // with a configuration file called as spring.xml placed
  // at classpath of our application. 
  AbstractApplicationContext context = 
    new ClassPathXmlApplicationContext(("spring.xml"));

  // Using AbstractApplicationContext registerShutdownHook()
  // method to demonstrate destroy() method being called

  // In order to get a object instantiated for a particular bean 
  // we call getBean() method of ClassPathXmlApplicationContext
  // passing it the id for which the object is to be needed. 
  // Here getBean() returns an Object. We need to cast it back 
  // to the Employee object. Without implementing new keyword we 
  // have injected object of Employee just by reading an xml 
  // configuration file.
  Employee employee = (Employee)context.getBean("employee");

  System.out.println("The name of Employee is : " + employee.getName());
  System.out.println("The age of Employee is : " + employee.getAge());



Output of the program :

© 2021 Learn Java by Examples Template by Hubberspot