Java BeanNotOfRequiredTypeException:未将spring工厂解析为子类型

Java BeanNotOfRequiredTypeException:未将spring工厂解析为子类型,java,spring,spring-mvc,Java,Spring,Spring Mvc,我遇到了一个问题,在spring中PropertiesFactoryBean没有生成Properties对象。相反,我得到了以下错误: org.springframework.beans.factory.BeanNotOfRequredTypeException: Bean named 'authProperties' must be of type [java.util.Properties], but was actually of type [org.springframework.bea

我遇到了一个问题,在spring中PropertiesFactoryBean没有生成Properties对象。相反,我得到了以下错误:

org.springframework.beans.factory.BeanNotOfRequredTypeException: Bean named 'authProperties' must be of type [java.util.Properties], but was actually of type [org.springframework.beans.factory.config.PropertiesFactoryBean]
    at org.springFramework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:367)
    at org.springFrameowkr.beans.factory.support.AbstractBeanFactory.etBean(AbstractBeanFactory.java:198]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1121
    at  *our code here*
这段代码是由已经可靠使用了一段时间的其他人编写的,因此问题可能是配置问题,而不是错误的代码。但是,故障发生在该方法的返回线上:

private static Properties getPropsFromContext(String context) {
    try(AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(context)){
        return ctx.getBeans("authProperties", Properties.class));
    }
}
XML文件的相关行包括:

<bean id="authProperties"  class="org.springFramework.beans.factory.config.PropertiesFactoryBean">
   <property name="location" value="classpath:props/auth.properties" />
</bean>

最终,代码是从tomcat内部调用的。我们正在为tomcat Relm使用我们自己的RealmBase类,该类调用此代码。包含RealmBase类的jar位于tomcat/lib目录中

应该发生的是,spring应该认识到PropertiesFactoryBean实现了FactoryBean接口,并且它应该调用PropertiesFactoryBean的getObject,作为doGetBean方法调用的GetObjectForBean实例的一部分,该实例将返回Properties对象。然而,由于某些原因,这并没有发生,我将返回PropertiesFactoryBean对象,而不是返回的属性。我甚至查看了代码来验证这一点

我们对该方法的单元测试运行良好,这再次表明失败不在于代码,而在于编译后的某个时间,可能是tomcat的配置问题。据我所知,tomcat类路径中没有重复的spring JAR或其他明显的命名冲突

我用的是Tomcat6。我们的spring jar大部分是3.2.9,少数是3.1.0,但我认为相关的jar都是3.2.9


为什么它不能正确生成属性值

我最终发现我运行的是一个过时的RealmJAR版本。当我安装新领域时,一切正常。我想我的问题是旧领域被编译成了不同版本的spring