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

