0
我想建立一個@ApplicationScoped緩存機制,它基本上只是存儲一些在啓動時讀取的數據庫值。是否有可能無需一直持有EntityManager和其他注入依賴項(即查詢工廠)?初始化期間我只需要它們。@ApplicationScoped - 是否可以獲得臨時注射?
我想建立一個@ApplicationScoped緩存機制,它基本上只是存儲一些在啓動時讀取的數據庫值。是否有可能無需一直持有EntityManager和其他注入依賴項(即查詢工廠)?初始化期間我只需要它們。@ApplicationScoped - 是否可以獲得臨時注射?
我不確定容器是否真的保持連接打開。但讓我們說,它會。首先,您需要通過CDI注射EntityManager
。你可以這樣做,像這樣:
@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
應確保依存度不活躍了。