0
@ApplicationScopedキャッシングメカニズムを設定したいのは、基本的に起動時に読み取るいくつかのデータベース値を格納するだけです。 EntityManagerや他の注入された依存関係(クエリファクトリ)を常時保持しなくてもこれを実行できますか?私は初期化の間にそれらを必要とします。@ApplicationScoped - 一時的な注射を受けることは可能ですか?
@ApplicationScopedキャッシングメカニズムを設定したいのは、基本的に起動時に読み取るいくつかのデータベース値を格納するだけです。 EntityManagerや他の注入された依存関係(クエリファクトリ)を常時保持しなくてもこれを実行できますか?私は初期化の間にそれらを必要とします。@ApplicationScoped - 一時的な注射を受けることは可能ですか?
コンテナが実際に接続を開いているかどうかはわかりません。しかし、それは言うでしょう。まず、EntityManager
をCDIで注射可能にする必要があります。あなたはそうのようにこれを行うことができます:
@ApplicationScoped
public class EntityManagerProducer {
@Produces
@PersistenceContext(unitName = "my-pu-name")
private EntityManager em;
}
次に、あなたが使用することができ、あなたの初期化メソッド内:
public void init() {
EntityManager entityManager = CDI.current().select(EntityManager.class).get();
// Do some stuff here
CDI.current().select(Entitymanager.class).destroy(entityManager);
}
.destroy
はその依存関係は、もはや有効ではないであることを確認する必要があります。