在 Spring MVC 應用程式中,如果應用程式關閉然后重新啟動,是否會在 WebApplicationContext 中創建一個新的 Singleton 類實體?
假設有一個單例范圍的 DAO 類,其中一些成員變數(狀態)在應用程式中被修改,然后應用程式被關閉。現在,當我們再次運行該應用程式時,之前的更改(在應用程式關閉之前進行的)是否仍然存在于該 DAO 中,或者當應用程式重新啟動時它將是一個新的單例實體?
uj5u.com熱心網友回復:
如果它是一個 Web 應用程式,那么當服務器停止或取消部署給定的戰爭時,如果戰爭是工件,或者如果是 jar(像 spring boot 中的嵌入式服務器),應用程式將通過退出終止程式來關閉。這種情況下,當應用程式退出時,jvm行程也會退出,應用程式內部的spring容器也會隨之退出,當spring容器不再啟動時,其中包含的物件也將不可用。
因此,您將在應用重啟時獲得一個新實體。
uj5u.com熱心網友回復:
新鮮的單例實體。
假設“單例”是指 bean 范圍:
Singleton scoped bean在應用程式啟動時由IoC容器創建,然后存盤在那里。因此,無論何時注入特定型別的類,IoC 容器都會回傳它創建的單個實體
Spring 應用中的IoC 容器只能根據配置元資料配置 bean (檢查基于注解和基于 java 的配置)。IoC 容器由ApplicationContext類表示。
ApplicationContext 僅在應用程式存在時“存在”。當應用程式停止時,ApplicationContext 會死掉,并丟失所有 bean 及其所有變數值。
DAO模式涉及創建與資料源通信的介面(在持久層中,通過使用例如EntityManager,使用存盤在 eg 中的元資料正確配置application.properties)。如果您有一個域物件(物件,“代表”資料庫記錄),它已在應用程式內部進行了修改并且沒有保存在外部某個地方(例如,在資料庫中),那么當應用程式停止時它會丟失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425495.html
標籤:春天 弹簧MVC 单身人士 应用上下文 网络应用程序设计
