2011-07-22 7 views
0

デフォルト以外のコンストラクタ、つまりパラメータを使用して依存性注入を使用する場合、Springはバイトコード計測を使用する必要があります。 AFAIKリフレクションはデフォルトのコンストラクタのみをサポートしていますか?そのように、反射によって、私はこのコンストラクタを呼び出します。Spring依存性注入/反映/バイトコード計測

public TestClass(int test1, String test) { 
    System.out.println(test1 + test); 
} 

答えて

3

反射は任意の数の引数をサポートし、私はそのコンストラクタの一つに二つの引数を取るクラスTestClassをを持っているインスタンスの言う

Constructor<TestClass> constructor = TestClass.class.getConstructor(Integer.class, String.class); 
    TestClass test = constructor.newInstance(1, "test"); 
0

反射。

クラスのソースコードを確認してください

org.springframework.beans.factory.support.ConstructorResolver 方法:保護されたBeanWrapper autowireConstructor(...)

は=>

組織を呼び出します。 springframework.beans.factory.support.SimpleInstantiationStrategy メソッド:public Object instantiate(...)

invoke =>

org.springframework.beans.BeanUtils方法:パブリック静的オブジェクトinstantiateClass(コンストラクタCTOR、オブジェクト[]引数)Beanを作成するためにリフレクションを使用