注解Spring @AliasFor使用笔记

  1. 简单注解类

    java 复制代码
    @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface ErasePasswordAnno {
    @AliasFor(attribute = "expression")
    String value() default "" ;
    
        String expression() default "" ;
    }
  2. 嵌套注解类

    java 复制代码
    @Target({ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @ErasePasswordAnno
    public @interface MapErasePasswordAnno {
        @AliasFor(annotation = ErasePasswordAnno.class, attribute = "value")
        String value() default "['recordList']" ;
    
        @AliasFor(annotation = ErasePasswordAnno.class, attribute = "expression")
        String expression() default "['recordList']" ;
    }
  3. 编写测试代码

    java 复制代码
    @Slf4j
    public class AliasForAnnoTest {
    
        @Test
        void simple() throws NoSuchMethodException {
            Method method = MapErasePasswordAnnoTest.class.getMethod("hello");
            ErasePasswordAnno annotation = AnnotationUtils.getAnnotation(method, ErasePasswordAnno.class);
            Assertions.assertNotNull(annotation);
            log.info("annotation value : {}", annotation.value());
            log.info("annotation expression : {}", annotation.value());
        }
    
        @Test
        void complex() throws NoSuchMethodException {
            Method method = MapErasePasswordAnnoTest.class.getMethod("hello2");
            ErasePasswordAnno annotation = AnnotatedElementUtils.findMergedAnnotation(method, ErasePasswordAnno.class);
            Assertions.assertNotNull(annotation);
            log.info("annotation value : {}", annotation.value());
            log.info("annotation expression : {}", annotation.value());
        }
        
        @ErasePasswordAnno("username")
        public void hello(){
    
        }
    
        @MapErasePasswordAnno
        public void hello2(){
    
        }
    }
相关推荐
策案案案9 小时前
YOLO: 将AI Agents嵌入到IntelliJ IDEA
java·大数据·人工智能·笔记·yolo·microsoft·intellij-idea
辰烨chenye10 小时前
LeetCode Hot 100 题解 · 堆篇
java·算法·leetcode
shehuiyuelaiyuehao11 小时前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
小刘在重生~11 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
随遇而安zx11 小时前
【多线程】---JMM 与 volatile 深度解析
java·多线程
邪修king11 小时前
Re:Linux系统篇(十九):进程篇(八): 进程等待详解:wait/waitpid,僵尸进程到底该如何回收
java·开发语言
啵啵啵鱼11 小时前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
TinyMemory12 小时前
Java 面向对象核心入门(七):方法重载 Overload,同一个方法名能干不一样的活
java·面向对象·overload·方法重载
吴声子夜歌12 小时前
Java扩展——OkHttp
java·开发语言·okhttp