【问题标题】:BeanNotOfRequiredTypeException: spring factory not being resolved to child typeBeanNotOfRequiredTypeException:弹簧工厂未解析为子类型
【发布时间】:2014-11-04 22:59:19
【问题描述】:

我遇到了一个问题,即 PropertiesFactoryBean 在 spring 中没有被归结为 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 方法调用的 getObjectForBeanInstance 的一部分,这将返回 Properties 对象。但是,由于某种原因,这并没有发生,我得到的是 PropertiesFactoryBean 对象,而不是返回的 Property。我什至查看了代码来验证这一点。

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

我正在使用 Tomcat6。我们的spring jar大多是3.2.9,少数3.1.0,但我觉得相关的jar都是3.2.9

为什么无法正确生成属性值?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    我最终发现我正在运行一个过时版本的领域 jar。当我安装新的 Realm 时,一切正常。我认为我的问题是旧的 Realm 被编译为不同版本的 spring。

    【讨论】:

      猜你喜欢
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多