Java annotation value use enum name
1. Background Java annotation value must be constant But some case want to use enum name(eg. spring-cache use enum config cache, operate cache need cache name) 2. Plan Plan 1: name property + external name interface 1 2 3 4 5 6 7 8 9 @lombok.Getter @lombok.AllArgsConstructor public enum CommonCacheConfig { QUOTE_LEVEL(CommonCacheConstant.QUOTE_LEVEL, 2); private final String name; private final int ttl; } 1 2 3 4 5 public interface CommonCacheConstant { String QUOTE_LEVEL = "QUOTE_LEVEL"; } Usage:@Cacheable(cacheNames = CommonCacheConstant.