Spring Beans在应用程序重启后幸免

时间:2011-12-12 10:33:49

标签: java spring swing

我这里有一个非常奇怪的问题。我有一个用Spring 3.0.5-ReleaseJava 6.0编写的桌面应用程序。我也在使用Swing作为用户界面。

在启动时,应用程序读取application-context.xml文件并从那里实例化配置bean,如下所示:

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

在我的应用程序中,我正在使用此Configuration bean中的属性。

问题现在如下:

我将应用程序打包到jar文件中并将其部署在计算机上。 我按照以下步骤操作:

  1. application-context.xml我将属性用户更改为 userA
  2. 现在我运行应用程序。一切都运行良好。在日志文件属性中,用户显示 userA
  3. 我关闭了应用

  4. application-context.xml我将属性用户更改为用户B

  5. 我运行该应用程序。但是在日志文件属性用户中显示 userA
  6. 更多信息。调试应用程序时不会发生这种情况。它仅在从命令行打包和执行应用程序时出现。 我通过默认的关闭按钮关闭我的应用程序并设置了这个:

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    

    任何想法,这里发生了什么? Spring bean是否有可能在应用程序重启后不知何故?是否有可能java进程没有关闭?

    我疯了。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:2)

您是从JAR文件运行的吗?该JAR文件中的应用程序上下文XML是什么?将bean从userA更改为userB后,您是否重新创建了JAR?这可以解释这种神秘的行为。

Spring bean不会在重启后继续存在,不会超过任何内存中的值。你的期望与现实不符。