如何消除 STS 中的虚假 "Referenced bean ... not found" 警告?

How to eliminate bogus "Referenced bean ... not found" warnings in STS?

STS(3.6.1 及其他),Spring 4.1.x(最新),Spring 集成 4.1.2

在我在 Eclipse/STS 从事的许多 Spring 项目中,我们有许多 "Referenced bean not found" 警告。这些通常指的是内部 Spring beans/classes,而不是我们自己的 bean 的合法错误配置。

这是我们的 Spring Data JPA 配置之一的示例:

Referenced bean 'jpaMappingContext' not found [config set: c-r-core/primary]

相关配置为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.5.xsd
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
    http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

<!-- other stuff -->
<jpa:repositories base-package="com.xyz.persistence" />

在我们的 Spring 集成配置中,我们收到更多警告:

Referenced bean 'Create Text$child.Build Transmission.handler' not found [config set: c-r-integration/primary]
Referenced bean 'Create Text$child.Store ControlNumber in Header.handler' not found [config set: c-r-integration/primary]
Referenced bean 'Create Text$child.Store Parameters in Header.handler' not found [config set: c-r-integration/primary]
Referenced bean 'Create Text$child.Write IC to String.handler' not found [config set: c-r-integration/primary]
Referenced bean 'FilePoller.source' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.integration.channel.interceptor.WireTap#0' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.integration.channel.interceptor.WireTap#0' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.integration.channel.interceptor.WireTap#0' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.integration.handler.MessageHandlerChain#0$child.Store GS info in Header.handler' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.integration.handler.MessageHandlerChain#0$child.Store IC info in Header.handler' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.integration.json.JsonToObjectTransformer#0' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.jms.listener.DefaultMessageListenerContainer#0' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.jms.listener.DefaultMessageListenerContainer#0' not found [config set: c-r-integration/primary]
Referenced bean 'org.springframework.scheduling.support.PeriodicTrigger#0' not found [config set: c-r-integration/primary]

似乎我们使用 Spring 集成命名空间越多,这些命名空间就会越多。

旧的 STS 论坛和 SO 上有一些其他相关问题,like this one其接受的答案根本没有帮助。我尝试了多次清理、启用和禁用 Spring Bean 引用验证的迭代,但无论我做什么,这些虚假警告总是在启用验证时返回。

重复一遍,这些 不是 由于配置错误或 STS 中的 "import support" 功能(如 here 所述)导致的实际问题。并且应用程序在运行时表现正确;这显然是一个仅限 STS 的问题。

我们努力保持我们的项目没有所有警告,因此这些警告非常混乱并且隐藏了真正需要我们注意的合法警告。

有什么方法可以解决这些问题并最终消除它们吗?它们甚至都是由于相同的潜在问题,还是这里有不同的问题?

它们很可能是命名空间解析器的问题;我不确定我们能否解决所有这些问题,但我同意,如果我们能够消除这些错误警告,那就太好了。

请先打开一个 JIRA Issue against Spring Integration,如果需要,我们会与 STS 团队讨论。

(对于 jpa 问题,您应该针对 Spring 数据打开一个 jira)。

编辑:我无法重现

Referenced bean 'org.springframework.integration.channel.interceptor.WireTap#0' not found [config set: c-r-integration/primary]

能否提供一个小测试用例?