2011-12-12 51 views
0

我在這裏有一個非常非常奇怪的問題。我有一個用Spring 3.0.5-ReleaseJava 6.0編寫的桌面應用程序。我也使用Swing作爲用戶界面。Spring Beans在應用程序重新啓動後生存嗎?

在啓動時,應用程序讀取一個文件application-context.xml,並從那裏實例化配置Bean,就像這樣:

<bean id="config" class="my.blabla.Configuration"> 
    <property name="port" value="5555"></property> 
    <property name="user" value="myUser"></property> 
</bean> 

在我的應用程序正在使用此配置Bean的屬性。

我將應用程序打包成一個jar文件和一臺計算機上部署它:

現在的問題,以下是。 我遵循以下步驟:

  1. application-context.xml我的財產用戶更改爲用戶A
  2. 現在我運行該應用程序。一切運行良好。在日誌文件屬性用戶顯示userA
  3. 我關閉了應用程序

  4. application-context.xml我更改屬性用戶用戶B

  5. 我運行該應用程序。但在日誌文件屬性用戶顯示userA

更多的信息。這在我調試應用程序時不會發生。它只在應用程序從命令行打包並執行時出現。 我通過默認的關閉按鈕關閉我的申請,並已將此:

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

任何想法,這裏發生了什麼?彈簧豆有可能以某種方式在應用程序重新啓動後繼續存在?有沒有可能java進程沒有關閉?

我越來越瘋狂。任何幫助,高度讚賞。

+0

只是瘋狂的猜測 - 舊的應用程序上下文獲取緩存在任何地方?檢查打包文件中的應用上下文 - 可能會有所幫助。 –

回答

2

您是否從JAR文件運行?該JAR文件中的應用程序上下文XML是什麼?將豆從userA更改爲userB後,您是否重新創建了JAR?這將解釋神祕的行爲。

Spring bean在重啓時不能存活,比任何內存中的值都多。你的期望與現實不符。

+0

是的,我從jar文件運行。應用程序上下文不在jar文件中。如果我在更改bean之後重新創建jar文件,那麼一切正常。如果我不重新創建,我會得到描述的行爲。 – flash

+1

您必須重新創建JAR。您不應該在JAR之外擁有應用程序上下文。 – duffymo

+0

需要娛樂的原因是什麼?爲什麼我不能在jar之外使用應用程序上下文?有什麼問題我不知道嗎? – flash

相關問題