如何將Java枚舉名稱作為注解的屬性值實現(xiàn)詳解
一、前言
- 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)
方案二:名稱屬性 + 內(nèi)部名稱接口
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
三、總結(jié)
- 通過 Lombok 的 FieldNameConstants 自動生成 枚舉名稱常量,提高了 可維護性
- 參考:java - Use Enum type as a value parameter for @RolesAllowed-Annotation - Stack Overflow
以上就是如何將Java枚舉名稱作為注解的屬性值實現(xiàn)詳解的詳細內(nèi)容,更多關于Java枚舉名稱作為注解屬性值的資料請關注腳本之家其它相關文章!
相關文章
SpringBoot接口請求入?yún)⒑统鰠⒃鰪姷奈宸N方法
這篇文章主要介紹了SpringBoot接口請求入?yún)⒑统鰠⒃鰪姷奈宸N方法,使用`@JsonSerialize`和`@JsonDeserialize`注解,全局配置Jackson的`ObjectMapper`,使用`@ControllerAdvice`配合`@InitBinder`,自定義HttpMessageConverter和使用AOP進行切面編程,需要的朋友可以參考下2024-07-07SpringBoot @Autowired注入為空的情況解讀
這篇文章主要介紹了SpringBoot @Autowired注入為空的情況解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03SpringBoot集成內(nèi)存數(shù)據(jù)庫hsqldb的實踐
hsqldb只需要添加對應的依賴,然后在配置文件進行配置。不需要安裝一個數(shù)據(jù)庫,本文就來介紹一下具體使用,感興趣的可以了解一下2021-09-09關于SpringBoot2.7.6連接nacos遇到的一些問題
這篇文章主要介紹了關于SpringBoot2.7.6連接nacos遇到的一些問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能
本篇文章主要介紹了java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01SpringBoot基于RabbitMQ實現(xiàn)消息可靠性的方法
RabbitMQ 提供了 publisher confirm 機制來避免消息發(fā)送到 MQ 過程中丟失,這種機制必須給每個消息指定一個唯一ID,消息發(fā)送到MQ以后,會返回一個結(jié)果給發(fā)送者,表示消息是否處理成功,本文給大家介紹了SpringBoot基于RabbitMQ實現(xiàn)消息可靠性的方法,需要的朋友可以參考下2024-04-04解決SpringBoot集成Eureka導致返回結(jié)果由json變?yōu)閤ml的問題
這篇文章主要介紹了解決SpringBoot集成Eureka導致返回結(jié)果由json變?yōu)閤ml的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07