これが私のDAO実装です。テーブル全体をロードし、一定期間メモリにキャッシュします
@ApplicationScoped
public class DataAccessFacade {
@Inject
private EntityManager em;
@CacheOutput
public Map<String, String> loadAllTranslation() {
List<Translation> list = em.createQuery("select t from Translation t").getResultList();
Map<String, String> result = new HashMap<String, String>();
// do more processing here, omitted for clarity
return result;
}
public String getTranslation(String key) {
return loadAllTranslation().get(key);
}
}
ここに私のジャージークライアントがあります
@Inject
DataAccessFacade dataAccessFacade;
@Path("/5")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String t5(@QueryParam("id") String key) {
// load the data from dataAccessFacade
String text = dataAccessFacade.getTranslation(key);
String text2 = dataAccessFacade.loadAllTranslation().get(key);
}
クライアントで dataAccessFacade.loadAllTranslation() を呼び出すと、インターセプター ロジックが実行されていることがわかります
内部で loadAllTranslation() を呼び出す dataAccessFacade.getTranslation() を呼び出すと、インターセプターが実行されたことを確認できませんでした。
ここで何が問題なのですか?
それを解決する方法は?