2011-12-12 54 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

相关问题