当依赖资源在Spring中发生变化时重新加载类

时间:2010-11-08 20:11:15

标签: java eclipse spring

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

3 个答案:

答案 0 :(得分:4)

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

这对于小应用程序非常有用,但是你的应用程序越大就会非常烦人。

如果您正在寻找开发的这种行为,请查看JRebel: http://www.zeroturnaround.com/jrebel/

答案 1 :(得分:2)

你说你想要重新发表这个课程吗?您是否希望更新应用程序上下文中bean的内容?如果是这种情况,那么您可以做的是:

1)编写文件系统监视器以监视资源是否有变化。有一个例子on google code

2)每当文件/资源​​发生变化时,让文件系统监视器触发自定义Spring ApplicationEvent,如果需要,为该事件提供资源信息。即文件名,先前修改时间,最后修改时间等

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

答案 2 :(得分:1)

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

  1. 阅读文章     这里     http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.platform.doc.user/gettingStarted/qs-93_project_builder.htm
  2. 创建一个简单的ant文件 包含一个目标,touches (只是改变日期 修改)依赖类, 但没有别的(如果你需要帮助,请告诉我)。 Eclipse将为您提供脚本内的变量。您可以使用任务轻松打印它们。您将在控制台中看到该列表。
  3. 右键单击该项目,然后 按属性
  4. 打开属性
  5. 中的“构建器”标签
  6. 将您的ant脚本添加为构建器 项目
  7. 限制此资源集 需要蚂蚁建设者。这个可以 在ant中的“构建选项”选项卡中完成 建设者选项。这样你的 项目会很快,而蚂蚁 脚本只会针对更改运行 属性文件
  8. 在“刷新”选项卡中运行ant脚本后设置要刷新的资源集(类,具体取决于属性)
  9. 在“目标”标签中设置要为“自动构建”调用的ant脚本目标。干净和手动构建之前和之后的其他人应该是空的
  10. 如果需要,您可以将ant脚本的日志重定向到文件。否则它将打开控制台视图。
  11. 将构建器移动到构建器列表中的第一个构建器,因为它必须在java构建器
  12. 之前运行

    这是一种解决方法,应该可行。它没有不好的副作用,因为java文件的内容不会改变,并且它不会影响版本控制系统,并且如果ant脚本在你的项目中,整个工作区是独立的工作区。