如何將Java枚舉名稱作為注解的屬性值實現(xiàn)詳解
一、前言
- Java注解的屬性值,必須為 常量
- 有些場景想把 枚舉名稱 設(shè)置為 注解的屬性值(如 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 需設(shè)置為 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)容,更多關(guān)于Java枚舉名稱作為注解屬性值的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot實現(xiàn)向量數(shù)據(jù)庫優(yōu)化檢索的方案及示例
在Spring?Boot中實現(xiàn)RAG(Retrieval-Augmented?Generation)的增強,可以從檢索優(yōu)化、生成優(yōu)化和系統(tǒng)架構(gòu)三個維度進行改進,本文給大家介紹了具體實現(xiàn)方案及示例,需要的朋友可以參考下2025-02-02
Spring Boot容器加載時執(zhí)行特定操作(推薦)
這篇文章主要介紹了Spring Boot容器加載時執(zhí)行特定操作及spring內(nèi)置的事件,需要的朋友可以參考下2018-01-01
一次排查@CacheEvict注解失效的經(jīng)歷及解決
這篇文章主要介紹了一次排查@CacheEvict注解失效的經(jīng)歷及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
被kafka-client和springkafka版本坑到自閉及解決
這篇文章主要介紹了被kafka-client和springkafka版本坑到自閉及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
java實現(xiàn)求只出現(xiàn)一次的數(shù)字
本文主要介紹了java實現(xiàn)求只出現(xiàn)一次的數(shù)字,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02

