-
简单注解类
java@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ErasePasswordAnno { @AliasFor(attribute = "expression") String value() default "" ; String expression() default "" ; }
-
嵌套注解类
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']" ; }
-
编写测试代码
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(){ } }
注解Spring @AliasFor使用笔记
yicj2024-08-06 14:25
相关推荐
知彼解己21 分钟前
字符串大数相加:从初稿到优化的思路演进拾忆,想起1 小时前
Redisson 分布式锁的实现原理焰火19991 小时前
[Java][SpringBoot]AspectJ切面配合自定义注解实现权限校验野生程序员y1 小时前
Spring DI/IOC核心原理详解往事随风去1 小时前
Java 中的 Consumer 与 Supplier 接口北城以北88882 小时前
Java高级编程--XMLSXJR2 小时前
Java mp4parser 实现视频mp4 切割冬天vs不冷2 小时前
Java基础(十一):关键字final详解上官浩仁2 小时前
springboot maven 多环境配置入门与实战元直数字电路验证2 小时前
新建Jakarta EE项目,Maven Archetype 选项无法加载出内容该怎么办?