Méthode de destruction de haricots de printemps, singleton et prototypes

Je suis nouveau sur le framework spring, a commencé avec quelques tutoriels pour apprendre.

J'ai les fichiers suivants,

# MainProgram.java

package test.spring;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainProgram {
        public static void main(String[] args) {
              AbstractApplicationContext context = 
                              new ClassPathXmlApplicationContext("Bean.xml");     
              HelloSpring obj = (HelloSpring) context.getBean("helloSpring");
              obj.setMessage("My message");
              obj.getMessage();
              context.registerShutdownHook();

        }
 }

# HelloSpring.java

package test.spring;

public class HelloSpring   {
     private String message;

     public void setMessage(String message){
      this.message  = message;
      System.out.println("Inside setMessage");
   }

   public void getMessage(){
      System.out.println("Your Message : " + this.message);
   }

   public void xmlInit() {
    System.out.println("xml configured  initialize");
   } 

    public void xmlDestroy() {
    System.out.println("xml configured destroy");
    }

  }

# Bean.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-3.0.xsd">

     <bean id="helloSpring" class="test.spring.HelloSpring" 
          scope="prototype" init-method="xmlInit" destroy-method="xmlDestroy">

     </bean>
     </beans>

Quand je prends scope="singleton" mon résultat est :

 xml configured  initialize
 Inside setMessage
 Your Message : My message
 xml configured destroy

Quand je prends scope="prototype" mon résultat est :

 xml configured  initialize
 Inside setMessage
 Your Message : My message

xmlDestroy() méthode est appelée avec singleton portée bean, mais pas avec prototype
de bien vouloir m'aider pour la suite ,

Est-ce correct? si oui, quelles seraient les raisons possibles?

Aussi j'ai quelques demandes,

quelle est la différence ou le rapport entre
ApplicationContext , AbstractApplicationContext and ClassPathXmlApplicationContext

source d'informationauteur Nikhil Rupanawar