0

在使用 Spring IDE 和 Spring Tool Suite (STS) 这么多年之后,我从来没有理解过一件事。我正在使用 XML 配置文件。一个文件(比如“applicationContext.xml”)通过以下方式导入其他 XML 文件:

<import resource="classpath:path/to/otherContextFile.xml" />

在我的 Eclipse 项目属性中,在 Spring | Beans Support,启用选项“启用对配置文件中的 <import/> 元素的支持”。

在同一个项目属性页面中,如果配置文件列表只包含 applicationContext.xml,STS 仍然能够检测到 otherContextFile.xml 的内容并正确解析。

但是,我看到的是,如果 STS 执行配置文件的自动检测,它总是将 otherContextFile.xml 添加到该列表中。但是将所有导入的配置文件添加到该列表听起来像“启用对配置文件中的 <import/> 元素的支持”选项对我来说毫无用处。因为我喜欢保持我的项目设置干净整洁,所以当这种情况发生时,我通常会从该列表中删除导入的文件。

但是,有时会触发自动扫描(可能在 STS 升级或我不知道......)并且这些文件被重新添加。这让我认为无论如何将它们列出来可能是一个更好的选择......

所以,问题是:什么更正确、优雅和高效(从性能的角度来看)?只列出“根”配置文件或全部(甚至是导入的)?如果答案是后者,那么“在配置文件中启用对 <import/> 元素的支持”选项的意义何在?

4

1 回答 1

0

“启用对<import/>配置文件中元素的支持”的主要目的正是您使用它的目的以及您在问题开头所描述的内容。因此,我认为您正在以“正确”的方式使用它(从 STS 工具的角度来看)。

自动扫描不应将那些导入的文件添加到项目属性中已使用的 Spring 配置文件列表中。它仅针对特定文件执行此操作,例如 Spring Boot 应用程序主类或 Web 应用程序中列出的文件。我目前不知道为什么这些导入的文件每隔一段时间就会添加到该列表中。这可能是一个错误,也可能是因为该机制发现这些文件正在其他地方使用。

我很想更详细地看一下,所以如果您可以创建一个重现此行为的小型示例应用程序并为此问题创建一个 GitHub 问题,那就太好了:https ://github.com/spring-projects/spring -ide/问题。请附上示例项目以及如何重现问题的几个步骤。

除此之外,您可以禁用每个项目或整个工作区的“自动扫描”(以快速摆脱这种行为)。您可以通过项目属性(第三个选项卡,在配置文件列表旁边)停用特定的自动配置。“全局”禁用可以在一般“首选项 -> Spring -> Beans Support”然后“禁用自动配置检测”中激活。

希望这可以帮助!!!

于 2016-10-24T14:33:45.670 回答