@Factory
現在、Seam のアノテーションから移行中です。と組み合わせると@Observer
、次のことができます。
@Factory(value = "optionsList", scope = ScopeType.APPLICATION)
@Observer("entity.modified")
public List<MyBean> produceEntityOptions() {
List l = getEm().createQuery('select e from entity e').getResultList();
Contexts.getApplicationContext().set("optionsList", l);
return l;
}
たとえば、使用可能なオプションのリストをキャッシュします<f:selectItems>
(実際の計算はより複雑になる可能性があります)。
CDIで使用するためにこれを翻訳しました
@Produces @Named("optionsList") @ApplicationScoped
public List<MyBean> produceEntityOptions() {
return getEm().createQuery('select e from entity e').getResultList();
}
ただし、外部イベントがキャッシュが古くなったことを通知する場合にのみ、キャッシュを再作成する機能が失われます。どうすればそれを取り戻すことができますか?