Nach Abschluss meiner Bewerbung möchte ich den Frühlingskontext schließen.
Der relevante Code hat eine ApplicationContext
Referenz, aber ich konnte keine close
Methode finden.
83
Niedergeschlagen Ihr ApplicationContext
zu ConfigurableApplicationContext
dem definierten close()
Methode:
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContext
AbstractApplicationContext
es sich um eine Klasse handelt undConfigurableApplicationContext
es sich um eine von dieser Klasse implementierte Schnittstelle handelt, ist es in den meisten Fällen wahrscheinlich besser, letztere zu verwenden.ConfigurableApplicationContext
jetzt erweitertClosable
(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();
.AutoCloseable
Implementierung, was bedeutet, dass jetzt ein Versuch mit Ressourcen verwendet werden kann, solange Sie Ihren Kontext in einer Variablen speichern, in der dieAutoCloseable
Schnittstelle 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:
Weitere Informationen finden Sie unter: Spring-Handbuch: 3.6.1.6 Herunterfahren des Spring IoC-Containers in Nicht-Webanwendungen
quelle
Wenn Sie den Kontext wie folgt initialisieren
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);
sauberer Kontext wie diese
quelle
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 }
quelle
Schritte zum Schließen des
ApplicationContext
ObjektsApplicationContext
Object toConfigurableApplicationContext
Object ein.Beispiel:
ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml"); ((ConfigurableApplicationContext)context ).close();
quelle
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();
quelle