Java 在Spring中更改依赖资源时重新加载类

Java 在Spring中更改依赖资源时重新加载类,java,eclipse,spring,Java,Eclipse,Spring,您知道当Eclipse所依赖的资源文件(如spring上下文文件)被更新时,Eclipse如何自动重新加载在Tomcat中运行的类,从而不必重新启动Tomcat吗?如何使类依赖于资源文件,以便Eclipse在资源文件更改时重新发布它?Eclipse会在其依赖资源文件更新后重新发布Spring类,但不会重新发布我的。我不确定是Spring为您这样做的。您是在Eclipse或Netbeans这样的IDE中开发的吗?可能发生的情况是,当您更改代码时,您的IDE正在“发布”(即重新部署)您的应用程序代码

您知道当Eclipse所依赖的资源文件(如spring上下文文件)被更新时,Eclipse如何自动重新加载在Tomcat中运行的类,从而不必重新启动Tomcat吗?如何使类依赖于资源文件,以便Eclipse在资源文件更改时重新发布它?Eclipse会在其依赖资源文件更新后重新发布Spring类,但不会重新发布我的。

我不确定是Spring为您这样做的。您是在Eclipse或Netbeans这样的IDE中开发的吗?可能发生的情况是,当您更改代码时,您的IDE正在“发布”(即重新部署)您的应用程序代码,因此每次IDE发布应用程序代码时,应用程序都会重新初始化,这给人一种错觉,即Spring会在上下文文件更改时重新加载它们

这对于一个小的应用程序很有用,但是你的应用程序越大,它就越烦人

如果您正在寻找这种用于开发的行为,请查看JRebel:

你说你想重新发布这个类?您的意思是希望更新应用程序上下文中bean的内容吗?如果是这样,那么您可以做以下操作:

1) 编写文件系统监视器以监视资源的更改。有一个例子

2) 让该文件系统监视器在文件/资源发生更改时触发一个定制的Spring ApplicationEvent,必要时为该事件提供资源信息。即文件名、上次修改时间、上次修改时间等


3) 让您想要更新的bean实现ApplicationEventListener,并在它捕获您的文件系统监视器事件时重新加载资源。

一个简单但有效的解决方法是将ant builder添加到您的项目中。采取的步骤:

  • 读这篇文章 在这里
  • 创建一个简单的ant文件 包含一个目标,该目标 (只需更改 修改)依赖类, 但是没有别的(如果你需要帮助,请告诉我)。Eclipse将在脚本中为您提供变量。您可以使用task轻松打印它们。您将在控制台中看到该列表
  • 右键单击项目,然后单击 压力机性能
  • 打开属性中的“构建器”选项卡
  • 将ant脚本作为生成器添加到 项目
  • 限制此资源集 蚂蚁建设者是需要的。这个可以 在ant的“构建选项”选项卡中完成 生成器选项。这样你的 项目会很快,蚂蚁 脚本将仅针对更改运行 属性文件的
  • 在“刷新”选项卡中运行ant脚本后,设置要刷新的资源集(类取决于属性)
  • 将ant脚本目标设置为在“目标”选项卡中调用“自动构建”。其他的,比如在清理和手动构建之后和之前,应该是空的
  • 若需要,可以将ant脚本的日志重定向到文件。否则将打开控制台视图
  • 将构建器移动到构建器列表中的第一位,因为它必须在java构建器之前运行

  • 这是一个变通办法,应该会奏效。如果ant脚本在您的项目中,它不会产生任何不良副作用,因为java文件的内容不会改变,也不会影响版本控制系统,而且整个过程与工作空间无关。

    。我正在使用Eclipse。我感到困惑的是,Eclipse会在更新Spring的依赖资源文件时重新发布其核心类,但不会重新发布我的自定义类。