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