Ich bin neu im Frühling Rahmen, begann mit einigen Tutorials, um es zu lernen.Spring Bean Zerstörungsmethode, Singleton und Prototyp Scopes
Ich habe folgende Dateien,
# 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>
Als ich scope="singleton"
nehmen meine Ausgang:
xml configured initialize
Inside setMessage
Your Message : My message
xml configured destroy
Wenn ich nehme scope="prototype"
meine Ausgabe lautet:
xml configured initialize
Inside setMessage
Your Message : My message
xmlDestroy()
Methode mit singleton
Umfang Bean genannt wird, aber nicht mit prototype
mir freundlich für die folgenden helfen,
Ist das ist richtig? Wenn ja, was wären mögliche Gründe?
Auch habe ich einige Anfragen wie,
Was ist der Unterschied oder Beziehung zwischen ApplicationContext , AbstractApplicationContext and ClassPathXmlApplicationContext
Für die Freigabe von Ressourcen kann der DestructionAwareBeanPostProcessor anstelle eines normalen BeanPostProcessor implementiert werden. –