gpt4 book ai didi

java - BeanNotOfRequiredTypeException : spring factory not being resolved to child type

转载 作者:太空宇宙 更新时间:2023-11-04 14:25:17 25 4
gpt4 key购买 nike

我遇到了一个问题,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 接口(interface),并且应该调用 PropertiesFactoryBean 的 getObject 作为 doGetBean 方法调用的 getObjectForBeanInstance 的一部分,该方法将返回 Properties 对象。但是,由于某种原因,这种情况没有发生,并且我返回的是 PropertiesFactoryBean 对象,而不是返回的 Property。我什至查看了代码来验证这一点。

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

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

为什么无法正确生成Property值?

最佳答案

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

关于java - BeanNotOfRequiredTypeException : spring factory not being resolved to child type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com