我有一个简单的Spring应用程序,它有一个方法:
@Cacheable("getSession")
public Session getSession(String sessionId) { ...
由eh-cache支持并且运行良好。我遇到问题的地方是我需要从这个缓存中驱逐对象,而不是基于sessionId(它们在缓存中键入的GUID),而是由返回对象的数据库Id驱逐:
public void evictSessionFromCache(long id) { ...
在此对象需要被驱逐的时候,我无法知道sessionId。
有人对此有任何指示吗?我已经尝试扩展EhCacheCacheManager以返回一个包装的Cache对象,其中包含db ID和sessionID之间的映射,但这感觉就像一个笨重的解决方案:
if(name.equals("getSession")) {
if(wrappedCache == null) {
wrappedCache = new WrappedCache(super.getCache(name));
}
return wrappedCache;
} else {
return super.getCache(name);
}
我是否可以使用开箱即用的属性来利用此注释并通过多个ID访问对象?或者我应该忘记注释并直接操作缓存/缓存管理器?
谢谢!