创建在注释字段中使用的常量

时间:2016-12-19 05:14:44

标签: java spring caching

我使用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因为我必须在代码的其他部分使用缓存名称,生命周期等执行其他操作。

1 个答案:

答案 0 :(得分:1)

CacheParam必须是enum,或name字段必须是static final String

注释返回类型可能只是基本类型,枚举,字符串,类和数组。