Nach Abschluss meiner Bewerbung möchte ich den Frühlingskontext schließen.
Der relevante Code hat eine ApplicationContextReferenz, aber ich konnte keine closeMethode finden.
Nach Abschluss meiner Bewerbung möchte ich den Frühlingskontext schließen.
Der relevante Code hat eine ApplicationContextReferenz, aber ich konnte keine closeMethode finden.
Antworten:
Niedergeschlagen Ihr ApplicationContextzu ConfigurableApplicationContextdem definierten close()Methode:
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContextes sich um eine Klasse handelt und ConfigurableApplicationContextes sich um eine von dieser Klasse implementierte Schnittstelle handelt, ist es in den meisten Fällen wahrscheinlich besser, letztere zu verwenden.
ConfigurableApplicationContextjetzt erweitert Closable(weiß nicht, in welcher Version diese Änderung vorgenommen wurde, aber die Dokumente für 4.2.x zeigen es, während 3.0.x dies nicht tut), ist eine viel kürzere Version ((Closable)context).close();.
AutoCloseableImplementierung, was bedeutet, dass jetzt ein Versuch mit Ressourcen verwendet werden kann, solange Sie Ihren Kontext in einer Variablen speichern, in der die AutoCloseableSchnittstelle sichtbar ist, dhtry (ConfigurableApplicationContext context = new ....) { /* your code goes here */ } // context is closed when you leave the try block
Sie müssen einen Shutdown-Hook bei der JVM registrieren, wie unten gezeigt:
((AbstractApplicationContext)appCtx).registerShutdownHook();
Weitere Informationen finden Sie unter: Spring-Handbuch: 3.6.1.6 Herunterfahren des Spring IoC-Containers in Nicht-Webanwendungen
Wenn Sie den Kontext wie folgt initialisieren
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);
sauberer Kontext wie diese
((ClassPathXmlApplicationContext) context).close();
Wenn Java SE 7 und höher nicht geschlossen wird, verwenden Sie try-with-resources, um sicherzustellen, dass jede Ressource am Ende der Anweisung geschlossen wird.
try(final AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"classpath*:META-INF/spring/*.xml" }))
{
//write your code
}
Schritte zum Schließen des ApplicationContextObjekts
ApplicationContextObject to ConfigurableApplicationContextObject ein.Beispiel:
ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml");
((ConfigurableApplicationContext)context ).close();
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("SpringCnf.xml");
Resturant rstro1=(Resturant)context.getBean("resturantBean");
rstro1.setWelcome("hello user");
rstro1.welcomeNote();
((ClassPathXmlApplicationContext) context).close();
AbstractApplicationContext