概述
- meta 子元素解析
- lookup-method 子元素解析
- replace-method子元素解析
BeanDefinition 是一个接口,它描述了一个 Bean 实例,包括属性值、构造方法值和继承自其它的类的更多信息。Spring通过BeanDefinition将配置文件中的< bean >
配置文件转换为容器的内部表示,并将这些BeanDefinition注册到BeanDefinitionRegistry中。Spring容器的BeanDefinitionRegistry就像是spring配置信息的内存数据库,主要以map的形式保存,后续操作直接从BeanDefinitionRegistry中直接获取配置信息。
java中有一个标准类 java.net.URL
,该类在 Java SE 中的定位为统一资源定位器(Uniform Resource Locator),但是我们知道它的实现基本只限于网络形式发布的资源的查找和定位。虽然可以通过注册特定的处理器来扩展处理不同的地址前缀,但是这通常比较麻烦,而且不易于使用。另外,实际上资源的定义比较广泛,除了网络形式的资源,还有以二进制形式存在的、以文件形式存在的、以字节流形式存在的等等。而且它可以存在于任何场所,比如网络、文件系统、应用程序中。所以 java.net.URL
的局限性迫使Spring必须实现自己的资源加载策略,该资源加载策略需要满足如下要求:
本文主要是参照Lesson: Packaging Programs in JAR Files来写,如果你的英文不错,可以直接看这个java官方教程。
在开始看下文你需要确认你安装的jdk环境带有jar命令,只需要在命令行中输入jar -h看看能不能找到命令即可。如果你安装的是oracle JDK,那么这个命令已经内置在java开发套件中。
下文所使用的源代码地址gihub