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

