I am new to Spring Framework, while executing below code I am getting a warning "Resource leak: 'context' is never closed"
package com.programmingtechie.examples;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
public class Main {
    @SuppressWarnings("deprecation")
    public static void main(String[] args){
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
        User user = (User)factory.getBean("user");
        System.out.println("This Text is using BeanFactory");
        System.out.println("My Name is "+user.getName());
        System.out.println("My Age is "+user.getAge());
        System.out.println("My Height is "+user.getHeight());
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User contextUser = (User)context.getBean("user");       
        System.out.println("This Text is using ApplicationContext");
        System.out.println("My Name is "+contextUser.getName());
        System.out.println("My Age is "+contextUser.getAge());
        System.out.println("My Height is "+contextUser.getHeight());
//      ((ConfigurableApplicationContext) context).close();
    }
}
I know that if I uncomment the ((ConfigurableApplicationContext) context).close(); line the warning would be resolved. But I found another way which resolved the warning message here and I don't know the reason for this behaviour. How does the below code resolve the resource leak warning ?
package com.programmingtechie.examples;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
public class Main {
    private static ApplicationContext context;
    @SuppressWarnings("deprecation")
    public static void main(String[] args){
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
        User user = (User)factory.getBean("user");
        System.out.println("This Text is using BeanFactory");
        System.out.println("My Name is "+user.getName());
        System.out.println("My Age is "+user.getAge());
        System.out.println("My Height is "+user.getHeight());
        context = new ClassPathXmlApplicationContext("beans.xml");
        User contextUser = (User)context.getBean("user");       
        System.out.println("This Text is using ApplicationContext");
        System.out.println("My Name is "+contextUser.getName());
        System.out.println("My Age is "+contextUser.getAge());
        System.out.println("My Height is "+contextUser.getHeight());
    }
}