我使用Spring
注释将缓存合并到现有的spring项目中。我创建了这个类来存储缓存配置 -
public class CacheParams {
public final String name;
public final int lifeTime;
public final TimeUnit lifeTimeUnit;
public final String key;
public CacheParams(args here) {/*implementation here*/}
}
这就是我打算使用它的方式 -
class FooDaoCache extends FooDaoImpl {
private static final CacheParam USER_BY_ID_CACHE = new CacheParams(values here);
@Override
@Cacheable(cacheNames = USER_BY_ID_CACHE.name, key = USER_BY_ID_CACHE.key)
public User getUser(int userId) {
implementation here
}
}
但这不起作用,因为USER_BY_ID_CACHE
将在编译时创建。如果我只是创建一个包含缓存名称的字符串常量,我可以成功使用它 -
class FooDaoCache extends FooDaoImpl {
private static final String CACHE_NAME = "baz";
@Override
@Cacheable(cacheNames = CACHE_NAME)
public User getUser(int userId) {
//implementation here
}
}
有没有办法处理这个或替代设计?我需要类CacheParams
因为我必须在代码的其他部分使用缓存名称,生命周期等执行其他操作。