Edited at

Javaでメモしたい

More than 5 years have passed since last update.


memo1.java

HogeService hogeService = new HogeService();

MemoizeService memo = new MemoizeService();

public void hoge(Integer hogeId) {
// HogeService.getHoge を呼ぶ
Hoge hoge = memo.wrap(hogeService).getHoge(hogeId);

//...

fuga(hogeId);
}
public void fuga(Integer hogeId) {
// HogeService.getHoge を呼ばずに先の値を返す
Hoge hoge = memo.wrap(hogeService).getHoge(hogeId);

//...
}


こういうことをしたい。


memo2.java

MemoizeService memo = new MemoizeService();

HogeService hogeService = memo(new HogeService());

とかするのは嫌だ。

なんかできそうな気もする。なんか既にそういういい感じのないかな。


キャッシュ寿命


memo3.java

  Hoge hoge = memo.requestScope(hogeService).getHoge(hogeId);

Hoge hoge2 = memo.eternal(hogeService).getHoge(hogeId);

こんな感じでウェブアプリケーション内で使っている時に同一リクエスト間だけ有効なキャッシュになるとか、ずっと保持しておくとか適当に制御できると嬉しい。

まあどちらかというと後者はどうとでもなるので、前者の同一リクエスト間だけ有効なキャッシュとかやりたい。