我有一个 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()
和getB()
Object 方法,但不会找到类中的其他方法。有没有人遇到过这样的问题,或者知道为什么它无法找到类中的所有方法?
我无法发布实际代码,但这里有一个更简单的版本:
public class MyClass {
private A a;
private int i;
public MyClass(D param) {
//initialize here
}
public A getA() {
return a;
}
public B getB() {
return new B(i++);
}
//I could invoke this in a static way
//however the same issue occurs either way.
public C getC() {
return new C();
}
}