范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

AliasFor注解

  顾名思义,@AliasFor表示别名,它可以添加到自定义注解的两个属性上,表示这两个属性互为别名。也就是说,这两个属性其实是同一个含义。
  通常所有注解都会有一个属性value,在使用注解时,如果给value进行赋值,默认可以将value省略,如:@RequestMapping(value="name")  就可以写成 @RequestMapping("name")  。自定义注解
  若自定义注解已有一个属性,但是我们想要定义一个能够描述业务的属性 ,就可以使用@AliasFor与之前已有的属性互为别名。如下代码,name和value就互为别名。@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface MyAnnotation { 	@AliasFor("value") 	String name() default "";  	@AliasFor("name") 	String value() default ""; }
  若自定义注解继承了另一个注解 ,要想使用继承过来的属性值,就必须在自定义注解中重新定义一个属性,同时声明该属性是继承过来注解的某个属性的别名。例如:@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Component public @interface MyComponent { 	@AliasFor(annotation = Component.class, attribute = "value") 	String name() default ""; }
  自定义注解@MyComponent继承了注解@Component(继承了哪个注解,就需要在自定义注解上引入该注解 ),name属性与@Component中的value属性互为别名。拓展
  因为我们的自定义注解继承了@Component注解,按理说@MyComponent的作用应该和@Component作用一样,但是此处有一点特殊 。如果我们的自定义注解中没有采用value这个属性,而是定义为其它名称,例如name。spring在初始化扫描bean时并不会像使用@Component注解一样,读取注解中自定义的beanName。示例如下,spring加载UserServiceImpl后生成的beanName并不是"userService",而是"userServiceImpl"。// 将userServiceImpl重新命名为userService @MyComponent(name = "userService") public class UserServiceImpl {     public void getName(){         System.out.println("userServiceImpl");     } }@ComponentScan("com.lr.interfaces.aliasFor") public class AppConfig {     public static void main(String[] args) {         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);         // 无法获取beanName为userService的实例,只能通过userServiceImpl获取         UserServiceImpl userService = (UserServiceImpl) context.getBean("userService");         userService.getName();     } }
  查看spring源码,发现spring在生成bean对应的beanName时,会先从注解@Component里获取value对应的名称(@Controller等注解本质上也是@Component,具体解释可以参考本文)。所以在自定义注解中如果将value替换为其它属性name,就无法采用自定义的beanName,只能生成默认的别名也就是类名。因此,在自定义注解时,最好采用默认的value 。
  建议自定义注解将name()修改为value():@Documented @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Component public @interface MyComponent {     @AliasFor(annotation = Component.class, attribute = "value")     String value() default ""; }spring中源码判断核心逻辑
  org.springframework.context.annotation.AnnotationBeanNameGenerator#isStereotypeWithNameValueprotected boolean isStereotypeWithNameValue(String annotationType,                                             Set metaAnnotationTypes, @Nullable Map attributes) {      // 判断注解中是否包含@Component     boolean isStereotype = annotationType.equals(COMPONENT_ANNOTATION_CLASSNAME) ||             metaAnnotationTypes.contains(COMPONENT_ANNOTATION_CLASSNAME) ||             annotationType.equals("javax.annotation.ManagedBean") ||             annotationType.equals("javax.inject.Named");     // 判断注解中是否包含属性value     return (isStereotype && attributes != null && attributes.containsKey("value")); }

竟然有1MOREComfoBudsZ睡眠豆这种专为提高睡眠质量而生的TWS?老林,听说你跟媳妇分床睡了?啊对啊,昨儿我睡的次卧咋了这是,做错啥事惹到你媳妇?嗨,这你可想歪了,我俩好着呢,我是为了测个耳机你这就胡扯了睡次卧跟测耳机能有啥关系!?别急啊,这事儿从开水白菜到海贝HiByRS6慈禧这老biao老佛爷用膳的时候,照例面前摆了满满当当一百多个菜,报菜名之类的事情有时候懒得听就不让报了,反正也记不住这许多,只不过这一次,她被一盘看起来颜色寡淡小玩意儿引发了好奇6年内免检的汽车,用手机就能年审?别着急我一步一步教你最近有不少粉丝私信我说,六年免审的汽车,怎么办理才能更便捷?以前汽车六年内免检,只能到车管所现场进行年审费时费力!如今有了交管12123APP,直接就可以在手机上面年审,动动手指就运动轿跑时尚外观,起售价6。79万,名爵5值得购买吗?名爵汽车自1924年诞生已有了快100多年的历史,也有不少人不知道名爵到底是国产品牌还是合资品牌?其实名爵是中国人掌控的国际品牌,它在2007年的时候被上汽集团收购。目前比较热销的不到7万的起售价格,2750mm越级轴距,五菱星辰值得购买吗?五菱这个品牌让我觉得很神奇!当大家缺口罩了,五菱来给你造!当大家想吃螺蛳粉了,五菱来给你做!当大家想要一台纯电代步车,不到三万的价格五菱MINIEV来了!真的是人民需要什么,五菱就荣威RX5MAX即将开启预售,预售价10万左右,值得购买吗?新款荣威RX5MAX将于下个月1日开始预售!去目前新车的预售价格还没有公布,不过按照老款车型的价格和销量情况,新车的起售价应该也在10万元左右。一外观方面前脸方面,新款荣威RX5M领克09正式上市,基于SPA构架打造,起售价26。59万领克这个品牌一直让我觉得很潮流,是一个主打年轻时尚的品牌。日前领克一改前态,发布了旗下的新款车型领克09,外观还是家族式的风格,加入了一些大气的元素进入,可以说有一种混搭的感觉。领2022款奥迪A4L正式上市,配置有所改变,起售价31。88万2022款奥迪A4L正式上市!目前共提供了四款车型分别为时尚致雅版豪华致雅版RS套件燃速版quattro臻选动感版,新车的售价区间在31。88万39。68万元之间,这款新车有哪些亮奔腾B702。0T版即将上市!7。86s可破百,新车值得购买吗?新款奔腾B70即将在本月29日正式上市!新增2。0T的车型,据悉会推出拼色的车身和2个配置,新车在外观方面没有太大的变化,不过在细节上增加了一些黑化的运动处理,新款奔腾B70到底怎2022款福克斯官图曝光!在三缸的路上,越走越远有时不知道车企怎么想的,明明知道三缸在国内销量不好,依然我行我素,日前福特发布了2022款福克斯官方图片,新车目前有两厢版跨界旅行版ST版三种车型,动力分为汽油1。0T三缸发动机1是你么?星爵?FIRAUDIOFIVEXFIVE评测今天要说的这款FIRAUDIO的FIVEXFIVE,本来我是写了三千多字的,写着写着忽然鬼使神差拿星爵做了个比喻,忽然就自我呆滞了天啊!这塞子真是越想越觉得神似星爵,这古灵精怪的包
00页智能制造概论PPT体系解读智能制造系列教材来源网络作者李培根高亮等写在前面(文中超链接仅在微信公众号智能制造之家有效)前面我们系统地介绍了智能制造体系解读智能制造核心技术及关键系统(300页PPT)也介绍了智能制造中的ER中国智能制造系统(PLMMESERPSCADAPLC)解决方案研究报告写在前面(文中超链接仅在微信公众号智能制造之家有效)前面我们分享了PLMERPMESSCADADCS工控工业软件工业机器人等的市场报告中国ERP软件行业研究SAP金蝶用友浪潮鼎捷哪60页智能制造规划与详细设计方案来源网络写在前面(文中超链接仅在微信公众号智能制造之家有效)大家好,我是小智,智能制造之家号主前面我们系统的介绍了智能制造体系解读智能制造核心技术及关键系统(300页PPT)也介绍XX数字化工厂SCADA与工业网络建设规划方案来源网络写在前面(文中超链接仅在微信公众号智能制造之家有效)前面我们整体解读了工业现场总线工业以太网和工业无线最详细的工业网络通讯技术与协议总结解读(现场总线工业以太网工业无线)也企业数字化顶层规划设计与总体方案(规划设计实施评价)今天我们分享这份企业数字化顶层规划设计与总体方案(规划设计实施评价)以下超链接仅在微信公众号智能制造之家有效92页巨头SAP项目型智能制造解决方案202109102021中国智能制127页传统产业数字化转型的模式和路径(下载)写在前面(文中超链接仅在微信公众号智能制造之家有效)大家好,我是小智,智能制造之家号主前面我们分享了PLMMES工业自动化工业软件工业机器人CAD等的市场报告西门子达索SAPPTC工业互联网全产业链企业名录来源大陆锦绣写在前面今天给大家整理一份工业互联网产业链全景图谱企业数字化顶层规划设计与总体方案(规划设计实施评价)2021091460页智能制造规划与详细设计方案202109119XX智能制造3D数字化工厂仿真解决方案来源网络写在前面(相关超链接和资料仅在微信公众号智能制造之家有效)在工业数字化转型如火如荼的今天,仿真作为数字孪生的一个关键一环,前面我们已经分享了很多自动化信息化数字化工业网络仿如何玩转小程序发券宝功能?让用户从不买到持续消费得有店发券宝是一款基于优惠券的精准营销工具,精准定向目标客户发放优惠券,实现新客促转化老客回购售后安抚商品优惠个性推荐等多个场景精准营销的目的,是店铺成交转化的神器。一发券宝功能1社交电商时代,怎么做好小程序私域营销实现用户增长?不管线下实体店还是传统电商,仅仅依靠现在的模式,很难实现流量的再增长。社交网络和小程序时代,各品牌商家纷纷挖掘社交流量红利,圈层私域流量。那么,如何打造小程序和私域营销阵地?接下来实体店如何借助小程序布局线上?怎样利用小程序解决困境?如今,实体店生意确实不好做,从疫情爆发以来,加速了实体店的线上转型,小程序具体为实体店解决了哪些难题?应该如何利用好小程序?一实体店痛点1服务范围有限2客户来了又走,留存难3运营成