0

我有一个简单的 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 访问对象?或者我应该忘记注释并直接操作缓存/缓存管理器?

谢谢!

4

0 回答 0