如何将Java枚举名称作为注解的属性值实现详解

 更新时间:2023年05月26日 10:16:41   作者:javalover  
这篇文章主要为大家介绍了如何将Java枚举名称作为注解的属性值实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、前言

  • Java注解的属性值,必须为 常量
  • 有些场景想把 枚举名称 设置为 注解的属性值(如 spring-cache 用枚举配置缓存,使用时 需要 缓存名称)

二、方案

方案一:名称属性 + 外部名称接口

@lombok.Getter
@lombok.AllArgsConstructor
public enum CommonCacheConfig {
  QUOTE_LEVEL(CommonCacheConstant.QUOTE_LEVEL, 2);
  private final String name;
  private final int ttl;
}
public interface CommonCacheConstant {
    String QUOTE_LEVEL = "QUOTE_LEVEL";
}

使用:@Cacheable(cacheNames = CommonCacheConstant.QUOTE_LEVEL)

方案二:名称属性 + 内部名称接口

public enum CommonCacheConfig {
  QUOTE_LEVEL(Constant.QUOTE_LEVEL, 2);
  private final String name;
  private final Integer ttl;
  public interface Constant {
      String QUOTE_LEVEL = "QUOTE_LEVEL";
  }
}

使用:@Cacheable(cacheNames = CommonCacheConfig.Constant.QUOTE_LEVEL)

方案三:Lombok 的 FieldNameConstants

@lombok.Getter
@lombok.AllArgsConstructor
@lombok.experimental.FieldNameConstants(onlyExplicitlyIncluded = true)
public enum CommonCacheConfig {
  @FieldNameConstants.Include QUOTE_LEVEL(2);
  private final Integer ttl;
}

使用:@Cacheable(cacheNames = CommonCacheConfig.Fields.QUOTE_LEVEL)

注意:FieldNameConstants 的 onlyExplicitlyIncluded 需设置为 true,否则 按枚举的属性(如 ttl)生成,同时在 枚举项前加 @FieldNameConstants.Include

三、总结

以上就是如何将Java枚举名称作为注解的属性值实现详解的详细内容,更多关于Java枚举名称作为注解属性值的资料请关注脚本之家其它相关文章!

相关文章

  • Spring Boot 多个定时器冲突问题的解决方法

    Spring Boot 多个定时器冲突问题的解决方法

    这篇文章主要介绍了Spring Boot 多个定时器冲突问题的解决方法,实际开发中定时器需要解决多个定时器同时并发的问题,也要解决定时器之间的冲突问题,本文通过问题场景重现给大家介绍的非常详细,需要的朋友参考下吧
    2022-05-05
  • SpringBoot实现向量数据库优化检索的方案及示例

    SpringBoot实现向量数据库优化检索的方案及示例

    在Spring Boot中实现RAG(Retrieval-Augmented Generation)的增强,可以从检索优化、生成优化和系统架构三个维度进行改进,本文给大家介绍了具体实现方案及示例,需要的朋友可以参考下
    2025-02-02
  • java中四种操作xml方式的比较

    java中四种操作xml方式的比较

    本文主要介绍了java中四种操作xml的方式并对它们进行比较分析。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Spring Boot容器加载时执行特定操作(推荐)

    Spring Boot容器加载时执行特定操作(推荐)

    这篇文章主要介绍了Spring Boot容器加载时执行特定操作及spring内置的事件,需要的朋友可以参考下
    2018-01-01
  • 一次排查@CacheEvict注解失效的经历及解决

    一次排查@CacheEvict注解失效的经历及解决

    这篇文章主要介绍了一次排查@CacheEvict注解失效的经历及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 被kafka-client和springkafka版本坑到自闭及解决

    被kafka-client和springkafka版本坑到自闭及解决

    这篇文章主要介绍了被kafka-client和springkafka版本坑到自闭及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java实现单词小游戏

    java实现单词小游戏

    这篇文章主要为大家详细介绍了java实现单词小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • SpringBoot HikariCP连接池详解

    SpringBoot HikariCP连接池详解

    这篇文章主要介绍了SpringBoot2.0 中 HikariCP 数据库连接池原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java线上频繁FullGC的完整排查流程

    Java线上频繁FullGC的完整排查流程

    这段文章详细介绍了FullGC的的常见触发原因原因、排查思路和优化方法,涵盖老年代不足、内存泄漏、MetaSpace元空间满等方面,并提供了从紧急应急到长期优化的全面解决方案,需要的朋友可以参考下
    2026-06-06
  • java实现求只出现一次的数字

    java实现求只出现一次的数字

    本文主要介绍了java实现求只出现一次的数字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论