アノテーション付きプライベートクラス属性のコンテナインジェクションはJavaでどのように機能しますか?

StackOverflow https://stackoverflow.com/questions/1615061

質問

Bill BurkeとRichard Monson-HaefelによるEnterprise Java Beans 3.0の本を読み始めました。第4章にはこのコードがあります

@PersistenceContext(unitName="titan") private EntityManager manager;

クラスには、このフィールドにアクセスするメソッドがあります(コンストラクターで設定されることはなく、setterメソッドはありません)。では、コンテナは実際のインスタンスでこのプライベートフィールドをどのように設定しますか?いくつかのリフレクションやバイトコードのマジックが進行していると仮定しています-それはどのように行われますか?

役に立ちましたか?

解決

getDeclaredFields()は、クラスで宣言されたフィールドのリストを返します。

コンテナは、すべてのフィールドをループして、適切な注釈をチェックします。必要なフィールドが見つかると、 setAccessible(true)を実行します。

他のヒント

manager.getClass().getDeclaredFields()

フィールドにアクセスできます。 javadocs こちら

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top