0

これら 2 つの選択肢に違いはありますか? どちらも同じ意味で使用できますか?

(A) カスタム アノテーションを作成して、DAO 内で @PersistenceContext の代わりに @Inject を使用できるようにします。

(B) 次のコード サンプルのように、 @Named("yourName") を使用して Producer を修飾します。

public class Resources {
    /**
     * EntityManager's persistence context is defined here so the @Inject annotation may be used in referencing classes.
     */
    @Produces
    @Named("MyEm")
    @PersistenceContext(unitName = "jboss.managed")
    private EntityManager   em;
}


@Stateless
public class FiletracksentHome {
     ..
    @Inject
    @Named("MyEm")
    private EntityManager       entityManager;
    ..
}
4

1 に答える 1

0

これらは交換可能ですが、(A) を使用する必要があります。

アノテーションは主に、@NamedJSF ビューなどで、式言語 (EL) を介してオブジェクトにアクセスできるようにするために使用されます。

問題は、解決が文字列を介して行われるため、タイプ セーフではなく、通常は IDE のリファクタリングによって自動的にカバーされないことです。

CDI 仕様では、レガシ コードの統合に使用しない場合は、インジェクション ポイントの認定には使用しないでください。

これは、このトピックに関する素晴らしい記事です。

于 2013-04-25T06:36:43.067 に答える