SpringIOC之AnnotatedElementKey

发布时间:2023年12月19日

博主介绍:?全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验?

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用ChatGPT,微信支付,扫码加群

点击这里预览

🍅开源项目免费哦(有vue2与vue3版本):击这里克隆或者下载??? 🍅

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。

最后再送一句:最好是学会了,而不是学废了!!!

AnnotatedElementKey 是 Spring Framework 中的一个类,用于表示带有注解的元素(如类、方法、字段等)的关键信息。它通常用于 Spring 的缓存和元数据查找,以提高性能并避免重复的注解处理。

AnnotatedElementKey 的主要作用是作为缓存键,用于快速查找和检索带有注解的元素的元数据信息。在 Spring 中,某些操作需要分析和处理类的注解(例如,Spring 的组件扫描、AOP代理等),而这些操作可能会频繁地进行。为了提高性能,Spring 使用 AnnotatedElementKey 将带有注解的元素的元数据信息进行缓存,以避免重复的解析和处理。

AnnotatedElementKey 的构造函数通常需要两个参数:

  1. element: 表示带有注解的元素,通常是 Class、Method、Field 等。
  2. annotationType: 表示要查询的注解类型,通常是一个 Class 对象,代表注解的类。

以下是一个示例,展示如何使用 AnnotatedElementKey:

import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.core.annotation.AnnotatedElementKey;

public class MyClass {

    @MyCustomAnnotation
    private String myField;

    public void myMethod() {
        // ...
    }

    public static void main(String[] args) {
        // 创建 AnnotatedElementKey
        AnnotatedElementKey methodKey = new AnnotatedElementKey(MyClass.class, MyClass.class.getMethod("myMethod"));
        AnnotatedElementKey fieldKey = new AnnotatedElementKey(MyClass.class, MyClass.class.getDeclaredField("myField"));

        // 使用 AnnotatedElementUtils 查询注解
        boolean methodHasAnnotation = AnnotatedElementUtils.hasAnnotation(methodKey, MyCustomAnnotation.class);
        boolean fieldHasAnnotation = AnnotatedElementUtils.hasAnnotation(fieldKey, MyCustomAnnotation.class);

        System.out.println("Method has @MyCustomAnnotation: " + methodHasAnnotation);
        System.out.println("Field has @MyCustomAnnotation: " + fieldHasAnnotation);
    }
}

在上述示例中,我们创建了两个 AnnotatedElementKey,分别表示 myMethod 方法和 myField 字段,并使用 AnnotatedElementUtils 类的 hasAnnotation 方法查询它们是否带有 MyCustomAnnotation 注解。

通过使用 AnnotatedElementKey 和 AnnotatedElementUtils,Spring 可以高效地进行注解查询和处理,从而提高了性能并避免了不必要的注解解析。这在 Spring 中的各种场景中都有广泛的应用,例如组件扫描、AOP代理、条件化注解等。

文章来源:https://blog.csdn.net/qq_57756904/article/details/135093866
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。