我想在 @Cacheable 中使用枚举作为其缓存名称,例如 @Cacheable(CacheName.CACHE_A.getName())
我有一个示例枚举,例如
public enum CacheName {
CACHE_A("CACHE_A");
private final String name;
CacheName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
我尝试在我的服务方法中像常量字符串一样使用它作为缓存名称
@Cacheable(CacheName.CACHE_A.getName())
public MyObject getObject(){
//return something
}
这不起作用。
当我声明一个常量类时它起作用
公共(public)静态字符串CACHE_A =“CACHE_A”;
如果我更喜欢使用枚举而不是常量类,是否有任何解决方法,我没有看到任何差异,因为枚举应该是固定的,对吧?请指正,谢谢
最佳答案
如果您不介意使用 lombok,那么有一个巧妙的技巧可以实现这一点:
@FieldNameConstants(onlyExplicitlyIncluded = true)
public enum CacheName {
@FieldNameConstants.Include CACHE_A,
}
然后在注释中,您可以通过 Fields
子类访问静态字段:
@Cacheable(CacheName.Fields.CACHE_A)
public MyObject getObject(){
//return something
}
在 lombok 版本 1.18.28
上测试。
关于java - 我可以在 @Cacheable 中使用枚举吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77598934/