怎么把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

三、总结

本文首先发布于 https://www.890808.xyz/ ,其他平台需要审核更新慢一些。

javalover123

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

Foxnic-Web 代码生成 (4) —— shadow 方法的应用

FoxnicWeb实体生成中shadow方法的应用本文探讨的是在FoxnicWeb实体模型生成时,配置枚举属性与逻辑值属性。配置枚举属性映射通过shadow方法为属性对应枚举,并同步生成get、set方法。

一篇文章带你了解CSS 文本样式

大家好,我是IT共享者,人称皮皮。这篇文章我们来讲讲CSS的文本样式。一、文本颜色Color颜色属性被用来设置文字的颜色。颜色是通过CSS最经常的指定:十六进制值如"#FF0000"。一个RGB值"RGB(255,0,0)"。颜色的名称如"红"。一个网页的文本颜色是指在主体内的选择:

SpringMVC(五):@RequestMapping下使用@RequestParam绑定请求参数值

在处理方法入参使用@RequestParam可以把请求参数传递给请求方法,@RequestParam包含的属性值:\value:参数名称\required:是否必须,默认为true,表示请求参数中必须包含对应的参数,否则抛出异常。\defaultValue:当请求参数缺少或者有请求参数但值为空时,值采用该设置值。示

API之Object.keys()

一、语法Object.keys(obj)参数:枚举自身属性的对象。返回值:一个表示给定对象的所有可枚举属性的字符串数组。二、处理对象,返回可枚举的属性数组varobj{projId:'SM31726327362187',pro