当前位置: 首页 > news >正文

注解Spring @AliasFor使用笔记

  1. 简单注解类
    @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface ErasePasswordAnno {
    @AliasFor(attribute = "expression")
    String value() default "" ;String expression() default "" ;
    }
    
  2. 嵌套注解类
    @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. 编写测试代码
    @Slf4j
    public class AliasForAnnoTest {@Testvoid 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());}@Testvoid 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(){}@MapErasePasswordAnnopublic void hello2(){}
    }
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 知识点——样本间独立性,传统表征学习,显式物理连接,隐含交互,噪声,类相关类无关
  • 从零开始的CPP(37)跳跃游戏,动态规划,贪心算法
  • 纷享销客CRM AI产品架构概览、产品特色
  • Github 2024-08-09 开源项目日报 Top10
  • git的一些操作指令
  • 工作随记:oracle中偶发遇到存储过程编辑,删除等卡死问题
  • 下一代 AI 搜索引擎 MindSearch:多智能体 + 系统2,模拟人类认知过程的 AI 搜索引擎
  • 在Ubuntu 18.04上安装和配置pgAdmin 4服务器模式的方法
  • Docker最佳实践(六):安装Nacos
  • 9.动态导航栏怎么做
  • uniapp微信小程序 canvas绘制圆形半透明阴影 createCircularGradient函数不支持透明度部分解决方案
  • 100道C/C++面试题
  • mysql8.4.2数据库做主从复制
  • 【Python基础】Python六种标准数据类型中哪些是可变数据,哪些是不可变数据
  • SQL Zoo 9-.Window functions
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 78. Subsets
  • co.js - 让异步代码同步化
  • co模块的前端实现
  • echarts花样作死的坑
  • js算法-归并排序(merge_sort)
  • Markdown 语法简单说明
  • node-glob通配符
  • Sass 快速入门教程
  • scala基础语法(二)
  • Vue2.0 实现互斥
  • vue-cli3搭建项目
  • 高度不固定时垂直居中
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 理清楚Vue的结构
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 算法---两个栈实现一个队列
  • 译米田引理
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # centos7下FFmpeg环境部署记录
  • # 职场生活之道:善于团结
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (六)c52学习之旅-独立按键
  • (十六)视图变换 正交投影 透视投影
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)c++ std::pair 与 std::make
  • (转)甲方乙方——赵民谈找工作
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)