@AliasFor注解

顾名思义,@AliasFor表示别名,它可以添加到自定义注解的两个属性上,表示这两个属性互为别名。也就是说,这两个属性其实是同一个含义。

通常所有注解都会有一个属性value,在使用注解时,如果给value进行赋值,默认可以将value省略,如:@RequestMapping(value=”name”) 就可以写成 @RequestMapping(“name”) 。

自定义注解

若自定义注解已有一个属性,但是我们想要定义一个能够描述业务的属性,就可以使用@AliasFor与之前已有的属性互为别名。如下代码,name和value就互为别名。

若自定义注解继承了另一个注解,要想使用继承过来的属性值,就必须在自定义注解中重新定义一个属性,同时声明该属性是继承过来注解的某个属性的别名。例如:

自定义注解@MyComponent继承了注解@Component(继承了哪个注解,就需要在自定义注解上引入该注解),name属性与@Component中的value属性互为别名。

因为我们的自定义注解继承了@Component注解,按理说@MyComponent的作用应该和@Component作用一样,但是此处有一点特殊。如果我们的自定义注解中没有采用value这个属性,而是定义为其它名称,例如name。spring在初始化扫描bean时并不会像使用@Component注解一样,读取注解中自定义的beanName。示例如下,spring加载UserServiceImpl后生成的beanName并不是”userService”,而是”userServiceImpl”。

查看spring源码,发现spring在生成bean对应的beanName时,会先从注解@Component里获取value对应的名称(@Controller等注解本质上也是@Component,具体解释可以参考本文)。所以在自定义注解中如果将value替换为其它属性name,就无法采用自定义的beanName,只能生成默认的别名也就是类名。因此,在自定义注解时,最好采用默认的value。

建议自定义注解将name()修改为value():

spring中源码判断核心逻辑

org.springframework.context.annotation.AnnotationBeanNameGenerator#isStereotypeWithNameValue

参考:

Original: https://www.cnblogs.com/fnlingnzb-learner/p/16397587.html
Author: Boblim
Title: @AliasFor注解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551744/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 用两个栈实现一个队列

    把栈封装成队列 对于栈,就采用c++里面的stack使用两个栈,栈是先进后出,而队列是先进先出现在有两个栈,一个栈A放数据,另一个栈B为空,只要把前面栈A的数据出栈然后压到栈B,然…

    技术杂谈 2023年6月21日
    086
  • Kubernetes 基础概念整理

    K8S基础组件 整个集群的控制中枢 集群控制中枢,各个模块之间的信息交互都需要经过Kube-APIServer,同时也是集群管理,资源配置,集群安全机制的入口 集群的状态管理器,保…

    技术杂谈 2023年7月11日
    065
  • 设计模式 19 备忘录模式

    备忘录模式(Memento Pattern)属于 行为型模式 2021 年 10 月 1 日下午,河南驻马店的一名 13 岁女中学生,因和同学发生不愉快喝下半瓶 百草枯。10 月 …

    技术杂谈 2023年7月25日
    064
  • 我的软件开发生涯 (10年开发经验总结和爆栈人生)

    您是.NET码农吗?您可以在.NET技术栈这里找到比较全面的关于.NET技术的框架、平台、IDE、开发包、桌面系统、web开发、SOA、数据访问、生产力、组件、工具等信息。 上初二…

    技术杂谈 2023年5月31日
    083
  • 最简单的学习往往是最无效的

    想必大家都是从学生时代过来的,或者现在还处于学生时代。 在学生时代,大家有没有见过,有的同学非常非常努力,上课听得非常认真,笔记也记录得非常认真,同时各种颜色和标记把书上画得密密麻…

    技术杂谈 2023年6月22日
    067
  • Docker配置LNMP环境

    目录规划 根目录下新建www目录,集中存放相关的配置文件和web文件 Mysql 从dockerhub拉取mysql镜像 $ docker pull mysql 实例化镜像,启动一…

    技术杂谈 2023年7月10日
    072
  • CSRF攻击:陌生链接不要随便点

    中我们讲到了 XSS 攻击,XSS 的攻击方式是黑客往用户的页面中注入恶意脚本,然后再通过恶意脚本将用户页面的数据上传到黑客的服务器上,最后黑客再利用这些数据进行一些恶意操作。XS…

    技术杂谈 2023年5月31日
    087
  • Jquery_效果-隐藏显示、淡入淡出、滑动面板、简单的动画队列

    1 DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset=&q…

    技术杂谈 2023年7月24日
    072
  • day4

    707.设计链表完整的设置链表的题目。插入可以先写,写完用在插表头和表位 if 0 <= index < self._count: # 计数-1 self._count…

    技术杂谈 2023年7月10日
    051
  • 辅导你的软件团队获得成功

    很少有人能靠自己的力量推进和发展自己的事业。一路上,他们有经验丰富的同事、导师和领导的帮助和指导。现在,你已经在职场上步步高升,你发现自己处于一个可以回报的位置。你有一个由软件工程…

    技术杂谈 2023年6月1日
    099
  • Linux系统Yum中的$releasever和$basearch变量

    Yum的配置文件中包含大量的$releasever和$basearch变量,那么他们的取值是什么呢? 为什么要折腾这个玩意呢?有点地方的网络是私有化网络,内部有大量的Linux服务…

    技术杂谈 2023年7月24日
    098
  • 海思3559 FFMPEG移植

    具体参考下面这篇帖子http://bbs.ebaina.com/forum.php?mod=viewthread&tid=79863&pid=156755&…

    技术杂谈 2023年6月21日
    093
  • 对两个数求解对大公约数

    对于这个最大公约数的球阀有两种, 第一种是: 自己手写规律: int lcm(int a,int b) {int max = (a >= b?a:b),min = (a &l…

    技术杂谈 2023年5月31日
    0110
  • Python实现改进后的Bi-RRT算法实例

    Python实现改进后的Bi-RRT算法实例 1.背景说明 以下代码是参照 上海交通大学海洋工程国家重点实验室《基于改进双向RRT的无人艇局部路径规划算法研究》的算法思想实现的。 …

    技术杂谈 2023年7月24日
    098
  • opendrive中的坐标系

    来源: (46条消息) OpenDrive格式高精度地图详细解析及其使用(1.栅格地图、OpenDrive坐标系以及参考线介绍)_LeeLee是一个小学生的博客-CSDN博客_op…

    技术杂谈 2023年5月30日
    085
  • Apache Doris 轻松入门和快速实践

    Doris 最早是解决百度凤巢统计报表的专用系统,随着百度业务的飞速发展对系统进行了多次迭代,逐渐承担起百度内部业务的统计报表和多维分析需求。2013 年,百度把 Doris 进行…

    技术杂谈 2023年6月1日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球