テストケースで使用する複数のオブジェクトをインスタンス化するために使用している Java クラスがあります。このクラスを呼び出すための春の構成では、次のようなものがあります。
<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 を介してデバッグすると、BeanMyClass.getC()
が作成されたときにメソッドが取得されず、メソッドとオブジェクト メソッドがgetLeafMethods()
検出されますが、クラス内の他のメソッドは検出されないことがわかります。以前にこのような問題に遭遇した人はいますか、またはクラス内のすべてのメソッドを見つけることができない理由を知っていますか?getA()
getB()
実際のコードを投稿することはできませんが、より単純なバージョンを次に示します。
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();
}
}