BeanCreationException:找不到工厂方法

时间:2013-01-08 07:02:35

标签: java spring

我有一个Java类,我用它来实例化多个对象以用于测试用例。 在我调用这个类的spring配置中,我有以下内容:

<bean id="myClass" class="com.foo.MyClass">
   <constructor-arg ref="myBean" />
</bean>

<bean id="myBeanA" factory-bean="myClass" factory-method="getA" />
<bean id="myBeanB" factory-bean="myClass" factory-method="getB" />
<bean id="myBeanC" factory-bean="myClass" factory-method="getC" />

MyClass不会扩展任何内容。 我的问题是调用方法MyClass.getA()MyClass.getB()有效但MyClass.getC()没有,并且始终抛出BeanCreationException: No factory method found getC()

这些方法都不是静态的,所有方法都是公开的。通过Spring jar进行调试我可以看到,当创建MyClass.getC()的bean时,它不会在getLeafMethods()时获取该方法,但会找到方法getA()和{{1}和Object方法,但没有类中的其他方法。有没有人遇到过这样的问题,或者知道为什么它无法找到类中的所有方法?

我无法发布实际代码,但这里有更简单的版本:

getB()

1 个答案:

答案 0 :(得分:1)

似乎我有两个问题,一个是构建问题,通过吹走并重新创建我的工作区来清除。第二个问题是在我的情况下,类型C是参数化的,我需要指定new C<T>();而不是new C();。我在C ( C.makeC(Params...))内部使用静态方法来实例化我认为导致错误的对象。所以我猜这是一个类型擦除问题导致了这一点。感谢您的帮助!

-Niru