我可以在@Cacheable中使用枚举吗

问题描述 投票:0回答:1

我想在@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 static String CACHE_A = "CACHE_A"; 

如果我更喜欢使用枚举而不是常量类,是否有任何解决方法,我没有看到任何区别,因为枚举应该是固定的,对吧?请指正,谢谢

java spring-boot caching enums caffeine-cache
1个回答
0
投票
public enum CacheName {
    CACHE_A(Names.CACHE);

    public class Names{
        public static final String CACHE = "CACHE_A";
    }

    private final String label;

    private CacheName(String label) {
        this.label = label;
    }

    public String toString() {
        return this.label;
    }
}

在注释中你可以像这样使用它

@Cacheable(CacheName.CACHE_A.CACHE)
public MyObject getObject(){ .. }
© www.soinside.com 2019 - 2024. All rights reserved.