2016-05-01 5 views
0

私は春のフレームワークを学び始めたばかりです。春がどのように設定メソッドのない別のBeanのプライベート変数にBeanを自動配線するのか不思議です。例えば、私はDependedBeanに依存しているDependentBean ... Springブートはprivate属性に対するアクセッサメソッドを持たずにBeanを別のクラスに自動変換する方法を教えてください。

@Component 
public class DependentBean { 
    @Autowired 
    private DependedBean dependedBean; //this class has no "setDependedBean" setter method.. 
} 

とDependedBeanため

...
@Component 
public class DependedBean{ 
    ... 
} 

春ブートアプリケーションが起動

、それはのdependedBean設定することができますがありますDependentBeanオブジェクトにdependedBean属性を設定するためのセッターメソッドがない場合でも、DependentBean春はそれをどのようにしていますか?私はちょうど興味があります...

+0

あなたの表現は奇妙です - 'private'はアクセス修飾子です、' setDependendBean'はアクセサメソッドまたはセッターです。 –

+0

申し訳ありませんが、質問を編集します... – Paul

答えて

1

反射。多くの依存性注入フレームワークでは、リフレクションを使用して実行時にクラスを処理し、動作を変更します。

Class#getDeclaredFields()は、プライベートフィールドも含めて、クラス内のすべての宣言フィールド(Field APIでラップされています)の配列を返します。 Field APIでは、注釈(isAnnotationPresentgetAnnotationgetAnnotations)を検査し、現在の値(set(Object, Object))を設定することができます。

2

Javaでは、リフレクションを使用してクラスのプライベートフィールドにアクセスできます。その方法については、this Stack Overflow questionを参照してください。

関連する問題