有没有办法使用 Spring Framework 的缓存抽象来始终返回对象的缓存化身?
我有一个图像调整大小的方法。该resize()
方法返回一个临时文件,该临时文件使用我使用 Spring 的缓存抽象的File
手动二进制文件进行缓存。Cache
该方法本身是通过缓存的,@Cacheable
并且一切正常。
困难在于,我需要在将这种方法生成的临时文件添加到缓存后以某种方式清理它们。
换句话说,当前的行为是:
第一次调用
resize()
- 返回生成的文件,/tmp/somefile.jpg
Spring 将其添加到缓存中。第二次调用
resize()
- 导致缓存命中,因此从/myCache/somefile.jpg
这导致临时文件挥之不去。
我无法在我的Cache#put(Object key, Object value)
方法中删除源文件,因为这是从关联方法的非缓存调用返回的文件。
有没有人遇到过类似的情况并用优雅的解决方案解决了它?理想情况下,我希望所有可缓存方法的调用都返回缓存的对象。