本篇内容主要讲解“@AliasFor注解如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“@AliasFor注解如何使用”吧!@AliasFor
注解基本上都是在spring源码当中出现的,AliasFor
是Spring提供的注解,Alias
是别名的意思,For
是为了,首先我们通过命名可以得出一个结论,他是为了别名而自定义的注解!Spring中@AliasFor注解的作用有两点:将同一个注解类的属性设置互为别名将一个注解上的属性值传递给另一个注解但这并不是java原生支持的,需要通过Spring中提供的工具类:org.springframework.core.annotation.AnnotationUtils
或者org.springframework.core.annotation.AnnotatedElementUtils
来解析。AnnotatedElementUtils内部还是调用的AnnotationUtils。源码如下:它有三个属性value和attribute以及annotation,@AliasFor注解注释了自身,并且value和attribute互为别名,通过源码很容易知道,当我们使用这个注解,@AliasFor(value=“xxx”)
和@AliasFor(attribute=“xxx”)
是等价的。Java 运行时读取Annotation 需要通过反射,Spring 提供AnnotationUtils , AnnotationElementUtils 用于简化操作,其他特点如下:查询Meta Annotation(注解的注解)对@AliasFor 解析,生成指定注解的代理,并赋值。(注:定义其他Annotation 的别名)Utils 调用涉及的元素:Annotation: Annotation 元数据AnnotatedElement: 被Annotation注解的对象,包括annotation , class , method等Method: 类和接口中的方法信息AnnotationUtils常用方法:getAnnotation
: 从某个类获取某个annotationfindAnnotation
: 从类或方法中查找某个annotation。isAnnotationDeclaredLocally
: 验证annotation是否直接注释在类上而不是集成来的。isAnnotationInherited
: 验证annotation是否继承于另一个class。getAnnotationAttributes
: 获取annotation的所有属性。getValue
: 获取指定annotation的值.getDefaultValue
: 获取指定annotation或annotation 属性的默认值AnnotatedElementUtils常用方法:findMergedAnnotation:这个方法会合并@AliasFor传递的值一共有两个属性然后使用自定义的注解@EnableCVS修饰首先我们设置的注解是@EnableCVS(address = "hhh")
,只设置了address
属性,并没有设置value
属性,会发现jdk原生方式获取value
的时候是拿不到值的,而spring提供的AnnotationUtils却可以获取到,而且获取到的就是address的值!其实就可以理解为,一旦value值设置了如下注解@AliasFor(value = "address")
,也就意味着通过AnnotationUtils
来获取value
属性值的时候,当value
值没有设置的时候,实际上会去获取address
属性的值!注意:如果@AliasFor注解当中两个属性互相设置了@AliasFor别名,并且使用自定义注解的时候,同时设置address和value的值,这时候通过AnnotationUtils#findAnnotation(Class>, annotationType)获取属性值,则会抛出异常!示例如下:使用@SingletonComponent修饰Connected to the target VM, address: ‘127.0.0.1:49763’, transport: ‘socket’
@SingletonComponent : @com.gzl.cn.springbootnacos.aa.SingletonComponent(value=”simpleService”)
@SingletonComponent value: simpleService
———————————————-
@Scope : @org.springframework.context.annotation.Scope(proxyMode=DEFAULT, scopeName=”singleton”, value=”singleton”)
@Scope value: singleton
—————————————免费云主机域名——-
@Component : @org.springframework.stereotype.Component(value=”simpleService”)
@Component value: simpleService
———————————————-
bean : com.gzl.cn.springbootnacos.aa.SimpleSingletonService@1b759d6
@org.springframework.stereotype.Component(value=”simpleService”)如下所示@SpringBootApplication并没有定义新的属性,而是复用其他注解已有的注解属性,并对其进行组合形成新的注解从而到达到便捷的目的。这样的注解我们可以称之为复合注解。所以在使用SpringBoot 时我们只需要@SpringBootApplication一个注解就能开启自动配置,自动扫描的功能。而不再需要使下面三个注解来达到同样的目的。到此,相信大家对“@AliasFor注解如何使用”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
相关推荐: Python报错SyntaxError:unexpected EOF while parsing如何解决
这篇文章主要介绍“Python报错SyntaxError:unexpectedEOFwhileparsing如何解决”,在日常操作中,相信很多人在Python报错SyntaxError:unexpectedEOFwhileparsing如何解决问题上存在疑惑,…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。