从源码的角度解析Spirng 的import标签和alias标签的处理

news2025/2/6 1:07:18

在上一篇博客《源码深度剖析Spring Bean标签的解析及注册》中描述了bean 标签的解析以及注册。 而Spring 的XML 配置文件职工包括import标签、alias标签、bean标签和beans 标签,那么这篇博客就针对剩余的import 标签 、alias标签进行处理。由于beans标签类似于import标签所提供的功能,再次就不在赘述了, 感兴趣的可以自行查看源码。

alias 标签处理

在对bean进行定义的时候, 除了使用id属性来指定名称之外,为了提供多个名称,可以使用alias标签来指定,而这些指定的名称都会指向同一个bean。在XML 配置文件中,可以单独使用标签来完成bean别名的定义,例如:
在这里插入图片描述
这样每个组件及主程序就可以通过唯一名称来引用同一个bean 而互不干扰了。 alias 的解析入口如下:
在这里插入图片描述
接下来就来看下是如何解析alias标签的。
在这里插入图片描述从代码中可以得知,alias标签解析最终调用了bean标签中的alias标签解析,最终也是将alias 和beanName 组成一对注册至registry中。

import 标签处理

如果xml过于庞大的时候,可以把按照一定的规则拆分为多个xml,然后通过import 标签导入到主的XML 配置文件中, 例如:
在这里插入图片描述
通过import 标签导入有模块配置文件,在后续的开发中若有新的模块加入,就可以简单修改这个文件,可以大大简化配置后期维护的复杂度,使配置模块化,易于管理, spring解析import标签入口如下:
在这里插入图片描述
在解析import标签时,spring 通过以下6个步骤完成解析:
步骤一: 获取resource 属性所表示的路径
步骤二: 解析路径中的系统属性,
步骤三:判定location 是绝对路径还是相对路径;
步骤四: 如果是绝对路径则递归调用bean的解析过程,进行解析;
步骤五: 如果是相对路径则计算出绝对路径进行解析;
步骤六:通过监听器,解析完成。
在这里插入图片描述

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

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

相关文章

docker基础

目录常用命令Docker命令镜像命令(image)容器命令(container)容器数据卷命令挂载具名挂载和匿名挂载查看卷信息数据卷权限dockerfile挂载新建dockerfile文件build构建dockerfile的镜像用自定义的镜像启动容器查看主机挂载路径容器共享数据卷多容器创建DockerFile文件创建dockerf…

三大管理法则—鱼缸法则、木桶效应、热炉法则

一、鱼缸法则 鱼缸法则运用到管理中,就是增加工作的透明度。 各项工作有了透明度,领导者的行为就会置于全体下属的监督之下,就会有效地防止领导者滥用权力,从而强化领导者的自我约束机制。 项目管理中,管理者可以使…

AI 编剧大师 #Dramatron

DeepMind 近日发布了一款名为 “Dramatron” 的新 AI 写作模型,用上它人人都可以变身编剧或者作家,只需要给出一句话大纲, Dramatron 就能生成包括标题、角色列表、情节、场景描述和对话的完整电影 or 戏剧脚本,并且连贯性极强。简…

解决安全生产知识题库小程序加载超大数据无法渲染的问题

遇到问题 在搭建安全生产知识竞赛题库小程序的时候,由于题库的题量太大了,一次性加载setData或者多次concat后setData,其实它俩都是一次性setData,这样就会造成加载超大数据无法渲染空白的问题。 安全生产知识竞答 解决微信小程序…

计算机毕设Python+Vue学生日常事务管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

line-height:1的存在意义是什么(v1)

一、line-height:1的存在意义是什么&#xff08;v1&#xff09; 1. 加不加这段代码的区别是什么&#xff1f; 示例代码 <!DOCTYPE html> <html lang"en"> <style>p{line-height:1;} /* 随时注释的line-height:1 */p{margin:0;background-color:…

《罗马革命》豆瓣 9.1 从恺撒大帝到屋大维

《罗马革命》 关于作者 本书的作者罗纳德•塞姆&#xff0c;是英国牛津大学古罗马历史教授&#xff0c;被誉为20世纪西方世界最出色的罗马史学家。 关于本书 本书的作者抛弃了古罗马史家的论述&#xff0c;从政治史研究的角度&#xff0c;观察罗马革命的前因后果&#xff0c…

Java——记录BigDecimal与0比较的一个坑

文章目录前言问题解决问题解决前言 在之前做的一个项目中&#xff0c;为了保证BigDecimal在除数 divide时&#xff0c;如果被除数为0&#xff0c;出现java.lang.ArithmeticException: / by zero 报错问题&#xff0c;写了一个对比。具体代码如下&#xff1a; public static B…

Promise(一) 介绍及基本使用+API

目录 1.Promise 的理解和使用 1.1. Promise 是什么? 1.1.1. 理解 1.2. 为什么要用 Promise? 1.2.1. 指定回调函数的方式更加灵活 1.2.2. 支持链式调用, 可以解决回调地狱问题 1.3 promise初体验 1.4 Promise实践练习——fs读取文件 1.5 Promise实践练习——Ajax请求…

论文精讲 | 一种隐私保护边云协同训练

作者&#xff1a;王森、王鹏、姚信、崔金凯、胡钦涛、陈仁海、张弓 &#xff5c;单位&#xff1a;2012实验室理论部 论文标题 MistNet: Towards Private Neural Network Training with Local Differential Privacy 论文链接 https://github.com/TL-System/plato/blob/main/…

安装MYSQL 社区版 mysql 8.0.30

https://dev.mysql.com/downloads/ 上面地址下载 安装社区版&#xff0c;选择开发者选项 mysql社区版 8.0.30&#xff0c; 直接都下一步&#xff0c;下一步的安装 安装进度一直在显示 安装完成&#xff0c; 下一步 开发者 输入密码&#xff1a; 增加用户 sa 又是一番执行 …

Effective C++(一):让自己习惯C++

个人读书记录&#xff0c;不适用教学内容。 目录 条款01&#xff1a;视C为一个语言联邦 条款02&#xff1a;尽量以const&#xff0c;enum&#xff0c;inline替换#define 条款03&#xff1a;尽可能使用const 所谓的"顶层const"和"底层const" const返回…

微服务框架 SpringCloud微服务架构 微服务面试篇 54 微服务篇 54.7 Sentinel的线程隔离与Hystix的线程隔离有什么差别

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务面试篇 文章目录微服务框架微服务面试篇54 微服务篇54.7 Sentinel的线程隔离与Hystix的线程隔离有什么差别?54.7.1 Sentinel与Hystix…

计算机毕设Python+Vue学生社团管理(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于蓝牙AOA技术的智慧医疗解决方案

1. 应用背景 医院需求分析在医疗体制不断完善的今天&#xff0c;医院的信息化程度已经大大提高&#xff0c;现在的大型医院都已经用上了医院信息系统(HIS)&#xff0c;它是医院管理同现代软件技术、网络技术相结合的产物。应用HIS系统后&#xff0c;确实方便了群众就医&#x…

【docker】DockerFile

一、DockerFile dockerfile是用来构建docker镜像的文件&#xff01;命令参数脚本&#xff01; 构建步骤&#xff1a; 编写一个dockerfile文件docker build构建成为一个镜像docker run 运行镜像docker push 发布镜像&#xff08;DickerHub 阿里云镜像仓库&#xff01;&#x…

【Python机器学习】分类算法任务、分类模型评价指标详解(图文解释)

分类任务 设样本集S{s_1,s_2,…,s_m}包含m个样本&#xff0c;样本s_i(x_i,y_i)包括一个实例x_i和一个标签y_i&#xff0c;实例由n维特征向量表示&#xff0c;即x_i(x_i^(1),x_i^(2),…,x_i^(n))。 在学习过程&#xff0c;分类任务将样本集中的知识提炼出来&#xff0c;形成模…

进程程序替换

文章目录进程程序替换是什么概念原理为什么要进行程序替换如何进行程序替换使用接口execl引入进程创建execvexeclpexecvpexecle进程程序替换是什么 概念 通过之前的学习&#xff0c;我们知道子进程执行的是父进程的代码片段。 如果我们想让创建出来的子进程&#xff0c;执行的…

PPT丑哭了?这个工具做报表上手更简单,效果更酷炫,送40套模板

如果2023年你还做着万年不变的饼图、折线图&#xff0c;你将会再次错失涨薪的机会&#xff01; 数据有多重要&#xff0c;已经不言而喻&#xff0c;随之而来的是职场对数据分析与展示能力的要求也越来越高。 但是你是不是这种情况&#xff1f;一用图表就只会用饼图、折线图&a…

ice.js 3 的体验优化策略介绍

ice.js 3 已经正式发布&#xff0c;期待更多的业务来使用、验证&#xff0c;一起建设更好的用户体验。ice.js 3 地址&#xff1a;https://v3.ice.work/本文将简单介绍 ice.js 3 中已经落地和正在进行的一些体验优化策略&#xff0c;以供探讨。Chrome 在去年成立了一个名为 Auro…