SpringIOC之AnnotatedElementKey

博主介绍:✌全网粉丝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代理、条件化注解等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/258111.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全】—计算机网络基础

文章目录 网络必备基础物理层数据链路层与交换机网络模型OSI/TCP对等传输虚拟局域网VLAN静态路由与配置网络地址转换NAT访问控制列表ACLIP协议与IP地址分类子网掩码网关子网划分总结 计算机网络是指将地理位置不同的、功能独立的多台计算机通过通信线路连接起来,以功…

部署智能合约以及 javascript 调用合约函数(Web3项目二实战之三)

在上一篇 智能合约是Web3项目的核心要务(Web3项目二实战之二) ,我们已然为项目编写了智能合约,在攥写完智能合约后,该项目将完成了一大部分,剩下无非就是用户界面交互的内容。 然而,在码完了智能合约代码后,起着承前启后关键性的便是,前端界面与智能合约的交互。 智能…

运行hive的beelin2时候going to print operations logs printed operations logs

运行hive的beelin2时候going to print operations logs printed operations logs 检查HiveServer2的配置文件hive-site.xml&#xff0c;确保以下属性被正确设置&#xff1a; <property><name>hive.async.log.enabled</name><value>false</value>…

sql_lab中sql注入之union联合注入

1.判断注入类型 gxalabs.com - 该网站正在出售&#xff01; - gxalabs 资源和信息。 没有回显 http://sss-s347glt.gxalabs.com/Pass-02/index.php?id1 and 11 http://sss-s347glt.gxalabs.com/Pass-02/index.php?id1 and 12 and11和and12回显效果一致&#xff0c;则判断…

Ps:文本的基本操作

在输入文字前&#xff0c;先确定是输入点文本还是段落文本&#xff0c;尽管二者可以相互转换。既可以对文本图层中的所有文本统一设置格式、移动或变换&#xff0c;也可以选择其中的一个或几个字符、一行或一段进行编辑。 新建点文本 使用文字工具在画布上单击并开始输入的文字…

[toolschain] 头文件有下划线报错不好看,ubuntu下vscode如何设置包含目录路径,以及如何找到安装包的头文件

写在前面 本文是把之前的散落在不同blog中的记录&#xff0c;总结单独合成了一篇文章 vscode 如何配置文件路径 之前使用visual studio 感觉在这一点上 更方便&#xff0c;如果vscode 要配置一下 。 新建&#xff1a;c_cpp_properties.json 或者 ctrl shift p在设置中查找 c…

深度学习目标检测(2)yolov3设计思想

YOLOv3基础 YOLOv3算法基本思想可以分成两部分&#xff1a; 按一定规则在图片上产生一系列的候选区域&#xff0c;然后根据这些候选区域与图片上物体真实框之间的位置关系对候选区域进行标注。跟真实框足够接近的那些候选区域会被标注为正样本&#xff0c;同时将真实框的位置…

[Win10系统] Win10 任务栏软件图标显示为空白 | 解决方案

文章目录 [Win10系统] Win10 任务栏软件图标显示为空白 | 解决方案前言产生错误的原因解决方案方法一&#xff1a;手动操作方法二&#xff1a;自动操作 总结 [Win10系统] Win10 任务栏软件图标显示为空白 | 解决方案 前言 有时候&#xff0c;我们在使用 Windows 10 系统时&…

栈——OJ题

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、最小栈1、题目讲解2、思路讲解3、代码实现 二、栈的压入、弹出序列1、题目讲解2、思路讲解…

SpringMVC---详细介绍+使用

文章目录 什么是SpringMVC&#xff1f;使用SpringMVCSpringMVC创建和连接创建连接RequestMapping的基础使用 获取参数返回数据返回静态页面返回非页面的普通数据&#xff08;text/html&#xff09;返回JSON对象请求转发或者请求重定向 什么是SpringMVC&#xff1f; SpringMVC它…

深入理解 HTTP 和 HTTPS:提升你的网站安全性(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

机器人制作开源方案 | 智能落叶清扫机器人

作者&#xff1a;李聪赛 马嘉骏 李佳豪 邵一鸣 池宏伟 单位&#xff1a;唐山学院 指导老师&#xff1a;袁娜 1. 引言 近年来&#xff0c;随着人工智能科学和计算机技术人工智能科学的飞速发展&#xff0c;智能机器人技术已成为当代机器人研究领域的热门话题。其中服务机器人…

MySQL表的增删改查(初阶)

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。且增删改查&#xff08;CRUD&#xff0c;create&#xff0c;retrieve&#xff0c;update&#xff0c;delete&#xff09;数据库的核心模块。 1. 新增&#xff08;Create&#xff09; 实…

120. 三角形最小路径和

三角形最小路径和 描述 : 给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说&#xff0c;如果正位于当前行的…

C语言—每日选择题—Day51

指针相关博客 打响指针的第一枪&#xff1a;指针家族-CSDN博客 深入理解&#xff1a;指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 对于函数void f(int x);&#xff0c;下面调用正确的是&#xff08;&#xff09; A&#xff1a;int y f(9); B&#xff1a;f(9); C&#xf…

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …

Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程

为了解决国内开发者从 github 克隆 esp 相关仓库慢的问题&#xff0c;已将 esp-idf 和部分重要仓库及其关联的子模块镜像到了 jihu&#xff0c;这些仓库将自动从原始仓库进行同步。此篇博客用来阐述 Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程。 注&#xff1…

AOP与日志(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 日志分类 有时候我们所…

ffmpeg windows开发之一(编译安装及入门指南)

一. 源码包下载 下载地址&#xff1a; Download FFmpegDownload FFmpeg 点击more lease&#xff0c;然后下载 二&#xff1a; MSYS2安装 &#xff1a; 下载地址&#xff1a;MSYS2 执行命令&#xff1a;pacman -Syu pacman -S mingw-w64-x86_64-gcc pacman -S mingw-w64-x86_64…

【Spring】14 ApplicationEventPublisherAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动3.5 工作流程图 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点&#xff0c;其中之一是 Bean 生命周期中的回调接口。本文将专注介绍一个与事件发布相关的接口 Applicatio…