自定义BeanNameGenerator生成规则

通过点进ComponentScan注解进入源码可以看到

在这里插入图片描述

追随BeanNameGenerator进入源码可以看到该类是个借口且只有一个方法

在这里插入图片描述

点击上面黑色箭头出现两个实现方法在这里插入图片描述

点击第一个方法

在这里插入图片描述

进入determineBeanNameFromAnnotation方法中在这里插入图片描述

通过上诉自定义一个生成beanName方法

  • 先创建一个CustomeBeanNameGenerator类
  • 实现BeanNameGenerator接口
  • 重写generateBeanName方法
public class CustomeBeanNameGenerator implements BeanNameGenerator {@Overridepublic String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {//定义Bean的名称String beanName = null;//1.判断当前bean的定义信息是否是注解的if(definition instanceof AnnotatedBeanDefinition){//2.把definition转成注解的bean定义信息AnnotatedBeanDefinition annotatedBeanDefinition = (AnnotatedBeanDefinition)definition;//2.获取注解Bean定义的元信息AnnotationMetadata annotationMetadata = annotatedBeanDefinition.getMetadata();//3.获取定义信息中的所有注解Set<String> types = annotationMetadata.getAnnotationTypes();//4.遍历types集合for(String type : types){//5.得到注解的属性AnnotationAttributes attributes = AnnotationAttributes.fromMap(annotationMetadata.getAnnotationAttributes(type, false));//6.判断attributes是否为null,同时必须是@Component及其衍生注解if (attributes != null && isStereotypeWithNameValue(type, annotationMetadata.getMetaAnnotationTypes(type), attributes)) {//7.获取value属性的值Object value = attributes.get("value");//8.判断value属性是否为String类型if (value instanceof String) {String strVal = (String) value;//9.判断value属性是否有值if (StringUtils.hasLength(strVal)) {if (beanName != null && !strVal.equals(beanName)) {throw new IllegalStateException("Stereotype annotations suggest inconsistent " +"component names: '" + beanName + "' versus '" + strVal + "'");}beanName = strVal;}}}}}return beanName != null ? "my"+beanName : "my"+buildDefaultBeanName(definition);}private static final String COMPONENT_ANNOTATION_CLASSNAME = "org.springframework.stereotype.Component";private boolean isStereotypeWithNameValue(String annotationType,Set<String> metaAnnotationTypes, @Nullable Map<String, Object> attributes) {boolean isStereotype = annotationType.equals(COMPONENT_ANNOTATION_CLASSNAME) ||metaAnnotationTypes.contains(COMPONENT_ANNOTATION_CLASSNAME) ||annotationType.equals("javax.annotation.ManagedBean") ||annotationType.equals("javax.inject.Named");return (isStereotype && attributes != null && attributes.containsKey("value"));}private String buildDefaultBeanName(BeanDefinition definition) {String beanClassName = definition.getBeanClassName();Assert.state(beanClassName != null, "No bean class name set");String shortClassName = ClassUtils.getShortName(beanClassName);return Introspector.decapitalize(shortClassName);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用结构体和类在Unity中管理IMU数据

使用结构体和类在Unity中管理IMU数据 IMU数据简介使用结构体管理IMU数据结构体的优点结构体的使用场景 使用类管理IMU数据类的优点类的使用场景 结构体(struct) vs 类(class)为什么考虑使用结构体 结论 在Unity开发中&#xff0c;合理地选择数据结构对于确保游戏和应用的性能和…

60 个 CSS 选择器,一网打尽!

CSS 选择器用于选择 HTML 元素并将样式应用于它们。使用这些选择器&#xff0c;可以定义特定条件下应用哪些样式。除了普通的选择器外&#xff0c;还有伪类和伪元素&#xff0c;用于选择具有特定状态或特定部分的元素&#xff0c;并将样式应用于它们。本文将通过图文并茂的方式…

Windows11家庭版安装Docker

文章目录 安装Docker安装hyper-v继续解决报错完成效果图进一步测试是否完成安装 安装Docker windows如何安装docker 装好之后&#xff0c;我打开报错。 安装hyper-v 按这个视频操作&#xff1a;Windows 11 家庭版安装 Hyper-V bat文件里的代码是&#xff1a; pushd "…

【Educoder数据挖掘实训】异常值检测-3σ法

【Educoder数据挖掘实训】异常值检测-3σ法 开挖&#xff01; 这个异常值检测基于的是两点&#xff1a; 数据往往遵循正态分布在正态分布中&#xff0c; [ μ − 3 σ , μ 3 σ ] [\mu - 3\sigma, \mu 3\sigma] [μ−3σ,μ3σ]包含了正态分布中 99.74 % 99.74\% 99.74%的数…

【投稿优惠|快速见刊】2024年图像,机器学习和人工智能国际会议(ICIMLAI 2024)

【投稿优惠|快速见刊】2024年图像&#xff0c;机器学习和人工智能国际会议&#xff08;ICIMLAI 2024&#xff09; 重要信息 会议官网&#xff1a;http://www.icimlai.com会议地址&#xff1a;深圳召开日期&#xff1a;2024.03.30截稿日期&#xff1a;2024.03.20 &#xff08;先…

2024全国水科技大会暨高氨氮废水厌氧氨氧化处理技术论坛(四)

一、会议背景 为积极应对“十四五”期间我国生态环境治理面临的挑战&#xff0c;加快生态环境科技创新&#xff0c;构建绿色技术创新体系&#xff0c;全面落实科学技术部、生态环境部等部委编制的《“十四五”生态环境领域科技创新专项规划》&#xff0c;积极落实省校合作&…

pip下载paddle、sklearn、cv2问题

ModuleNotFoundError: No module named ‘paddle‘ ModuleNotFoundError: No module named sklearn No matching distribution found for cv2 Could not build wheels for opencv-python, which is required to install pyproj

什么是BGP网络 (边界网关协议)

BGP&#xff08;边界网关协议&#xff09;是一种用于在互联网中交换路由信息的协议。作为网关或路由器之间的协议&#xff0c;BGP主要用于帮助确定数据包在网络中的路径。它通过在不同自治系统&#xff08;AS&#xff09;之间交换路径信息&#xff0c;实现了全球互联网网络的连…

MySQL进阶之(三)InnoDB数据存储结构之数据页结构

三、InnoDB数据存储结构之数据页结构 3.1 数据库的存储结构3.1.1 MySQL 数据存储目录3.1.2 页的引入3.1.3 页的概述3.1.4 页的上层结构 3.2 数据页结构3.2.1 文件头和文件尾01、File Header&#xff08;文件头部&#xff09;02、File Trailer&#xff08;文件尾部&#xff09; …

【JavaEE】_Spring Web MVC简介

目录 1. Spring Web MVC简介 2. MVC简介 3. Spring MVC 1. Spring Web MVC简介 官网对于Spring Web MVC的介绍如下&#xff1a; 链接如下&#xff1a; https://docs.spring.io/spring-framework/reference/web/webmvc.html#https://docs.spring.io/spring-framework/refer…

将SU模型导入ARCGIS,并获取高度信息,多面体转SHP文件(ARCMAP)

问题:将Sketchup中导出的su模型,导入arcgis并得到面shp文件,进而获取各建筑的高度、面积等信息。 思路: (1)导入arcgis得到多面体 (2)转为面shp文件 (3)计算高度/面积等 1、【3D Analyst工具】【转换】【由文件转出】【导入3D文件】(在此步骤之间,建议先建立一个…

栈和队列OJ题

文章目录 一、双队列实现栈二、双栈实现队列 一、双队列实现栈 题目链接&#xff1a; https://leetcode.cn/problems/implement-stack-using-queues/description/ 题目分析&#xff1a; 栈的结构是后进先出&#xff0c;而队列的结构是先进先出&#xff0c;我们利用这个性质&a…

AI Word Helper (Chorme Extentions) AI单词助手(谷歌浏览器插件)

AI Word Helper (Chorme Extentions) AI单词助手&#xff08;谷歌浏览器插件&#xff09; 英文网站&#xff0c;划词查单词&#xff0c;还是看不懂&#xff1f;因为单词意思那么多&#xff0c;词性搞不清&#xff0c;上下文搞不清&#xff0c;出来的意思就没法用&#xff0c;G…

一个基于轮询的广告系统

无论PC 客户端还是手机客户端&#xff0c;可能会遇到需要发布一些广告&#xff0c;这些广告可能是自己开发的&#xff0c;可能是三方的&#xff0c;而且希望是比较通用&#xff0c;能随时发布&#xff0c;随时就能看到效果。 本文提供了一种基于轮询的广告系统&#xff0c;主要…

【服务器数据恢复】昆腾存储中raid5磁盘阵列数据恢复案例

服务器数据恢复环境&故障&#xff1a; 10个磁盘柜&#xff0c;每个磁盘柜配24块硬盘。9个磁盘柜用于存储数据&#xff0c;1个磁盘柜用于存储元数据。 元数据存储中24块硬盘&#xff0c;组建了9组RAID1阵列1组RAID10阵列&#xff0c;4个全局热备硬盘。 数据存储中&#xff0…

Java基于springboot的个人理财系统

基于springboot的个人理财系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了个人理财系统的开发全过程。通过分析个人理财系统管理的不足&#xff0c;创建了一个计算机管理个人理财系统的方案。文章介绍了个…

多人音视频实时通讯架构

直播中的协议与格式 在直播系统中&#xff0c;协议和格式的选择对于传输效率、画面质量和用户体验都至关重要。以下是直播中常见的协议与格式&#xff1a; 协议 RTSP (Real Time Streaming Protocol) RTSP是一个网络流媒体协议&#xff0c;常用于视频监控和IPTV等场景。它本身…

考研机试C++题目精选

更多内容会在godownio.github.io更新 算法练习&#xff08;C代码&#xff09; 考研上机或C语言代码笔试准备&#xff0c;暨大机试原题letcode牛客中南大等高校机试 快速幂算法 题目&#xff1a;输入一个整数 n &#xff0c;求 n^n 的个位数是多少。 快速幂算法&#xff1a;…

面经分享|面了好未来NLP算法岗(实习),经历坎坷但值了!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 今天我分…

【复试2.293.1】c语言——基础杂项

1.define定义常量类似全局变量&#xff0c;引用是直接拼到代码中去。 2.关于e 3.参数传递 形参直接接收的是数组的起始地址 4.数组越界乱码问题 5.scanf读字符串的时候会自动在末尾放0&#xff08;结束符 6.scanf是读取输入缓冲区的数据&#xff0c;是一种拿走操作。读取若有…