Spring Framework のキャッシュ抽象化を使用して、キャッシュされたオブジェクトの具体化を常に返す方法はありますか?
画像のサイズ変更方法があります。このresize()
メソッドは、Spring のキャッシュ抽象化をFile
使用して手巻きバイナリを使用してキャッシュされた一時を返します。Cache
メソッド自体は経由でキャッシュされ@Cacheable
、すべて正常に動作します。
問題は、このメソッドによって生成された一時ファイルがキャッシュに追加された後で、それらを何らかの方法でクリーンアップする必要があることです。
つまり、現在の動作は次のとおりです。
-の最初の呼び出しは、Spring によってキャッシュに追加される
resize()
生成されたファイルを返します。/tmp/somefile.jpg
-の 2 回目の呼び出しで
resize()
はキャッシュ ヒットが発生するため、次のファイルが返されます/myCache/somefile.jpg
これにより、一時ファイルが残ります。
メソッド内のソース ファイルを削除できませんCache#put(Object key, Object value)
。これは、関連付けられたメソッドのキャッシュされていない呼び出しから返されたファイルであるためです。
誰かが同様の状況に遭遇し、エレガントなソリューションで解決しましたか? 理想的には、キャッシュ可能なメソッドのすべての呼び出しで、キャッシュされたオブジェクトが返されるようにしたいと考えています。