我瀏覽時看到了這幾次..人都在使用@Inject
標註自己注入EntityManager
這樣的:如何棧定義註解在Java中使用@Inject註解
@Inject @MyEm EnityManager em;
,因爲你不能只是注入EntityManager
。您只能使用@PersistenceContext
。有沒有人知道如何做這個工作(使用自定義註釋),因爲我沒有在網上找到任何信息?請舉個例子,如果可以的話。
我瀏覽時看到了這幾次..人都在使用@Inject
標註自己注入EntityManager
這樣的:如何棧定義註解在Java中使用@Inject註解
@Inject @MyEm EnityManager em;
,因爲你不能只是注入EntityManager
。您只能使用@PersistenceContext
。有沒有人知道如何做這個工作(使用自定義註釋),因爲我沒有在網上找到任何信息?請舉個例子,如果可以的話。
基本上你需要做的是創建一個鑑別符註釋並將其與生產者結合使用。這使您可以在Java EE應用程序中的其他bean中簡單@注入實體管理器。這裏是一個例子:
@Qualifier
@Retention(RUNTIME)
@Target(METHOD, FIELD, PARAMETER, TYPE)
public interface @MyEm {
}
public class EntityProducer {
@PersistenceContext(unitName = 'MyPU', type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;
@Produces
@MyEm
public EntityManager getEntityManager() {
return entityManager;
}
}
public class MyDAO {
@Inject
@MyEm
private EntityManager entityManager;
}
這被稱爲「限定符」。每個CDI教程都應該解釋它們。總之:
@Qualifier