[发明专利]一种Spring Bean组件ID冲突的解决方法和装置在审
申请号: | 202110650352.1 | 申请日: | 2021-06-10 |
公开(公告)号: | CN115469845A | 公开(公告)日: | 2022-12-13 |
发明(设计)人: | 蓝磊芳;蔡博文 | 申请(专利权)人: | 远光软件股份有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F9/445 |
代理公司: | 北京天达知识产权代理事务所有限公司 11386 | 代理人: | 刘镜 |
地址: | 519085 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 spring bean 组件 id 冲突 解决方法 装置 | ||
1.一种Spring Bean组件ID冲突的解决方法,其特征在于,包括如下步骤:
执行命名生成器中的扫描程序,获取项目目录下所有编译后文件;
遍历所述编译后文件,获取文件目录和文件名,将所述文件目录和所述文件名拼装得到的全限定类名放入子集中,以及,将所述文件名及其对应的子集组成键值对放入类信息集合中;其中,每次遍历将相同文件名对应的全限定类名放入同一个子集;
遍历所述类信息集合,取出长度大于1的子集放入黑名单集合中;
Spring加载Bean组件,执行命名生成器中的命名程序,取出当前Bean组件的全限定类名,当所述Bean组件的全限定类名存在于所述黑名单集合中,且不存在于白名单集合中时,根据预设规则生成Bean组件ID。
2.根据权利要求1所述的Spring Bean组件ID冲突的解决方法,其特征在于,所述命名生成器继承AnnotationBeanNameGenerator类,包括所述扫描程序和所述命名程序,其中:
所述扫描程序存储在静态块中,当创建所述命名生成器实例时自动执行所述扫描程序,用来扫描所有编译后文件,生成所述黑名单集合和所述白名单集合;
所述命名程序重写buildDefaultBeanName方法,用于识别Bean组件的ID是否冲突,对冲突的Bean组件根据所述预设规则生成Bean组件ID,其中所述预设规则是“beanId_全限定类名”。
3.根据权利要求2所述的Spring Bean组件ID冲突的解决方法,其特征在于,所述命名生成器用于对XML配置方式和注解方式定义的组件进行扫描和命名,其中XML配置方式包括:context:component-scan/,jpa:repositories/,注解方式包括:@ComponentScan。
4.根据权利要求3所述的Spring Bean组件ID冲突的解决方法,其特征在于,对所述XML配置方式,当Spring解析配置文件中的context和jpa标签时,根据spring.handlers文件中的配置,分别找到与标签命名空间相同的context标签处理器和jpa标签处理器,在context标签处理器和jpa标签处理器中的初始化方法中创建context扫描解析器和jpa扫描解析器,根据所述context扫描解析器和所述jpa扫描解析器中设置的命名生成器,创建所述命名生成器实例。
5.根据权利要求3所述的Spring Bean组件ID冲突的解决方法,其特征在于,对所述注解方式,当Spring根据@ComponentScan扫描组件时,调用实现内置接口的动态组件注册器,在所述动态组件注册器中获取组件工厂后置处理器,创建所述命名生成器实例。
6.根据权利要求1-5任一项所述的Spring Bean组件ID冲突的解决方法,其特征在于,所述黑名单集合中还包括通过读取预置的黑名单文件获得的黑名单;所述黑名单文件和所述白名单文件存放在项目META-INF文件夹下,文件内容支持全限定类名和末尾是*的通配符形式。
7.根据权利要求1所述的Spring Bean组件ID冲突的解决方法,其特征在于,所述所有编译后文件,包括class文件和jar文件,对所述jar文件,通过遍历取出其中所包含的class文件。
8.根据权利要求1所述的Spring Bean组件ID冲突的解决方法,其特征在于,所述根据预设规则生成Bean组件ID时,将当前Bean组件的全限定类名放入命名组件集合中,全部执行完毕后,将根据所述黑名单集合统计得到的冲突Bean组件总数量、根据所述命名组件集合统计得到的命名Bean组件数量和明细,输出在日志和/或文件中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于远光软件股份有限公司,未经远光软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110650352.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:晶圆、切割晶圆的方法、以及芯片
- 下一篇:一种营养素盐及其制备方法