Spring源码学习-容器初始化之FileSystemXmlApplicationContext(一)构造函数

宅男Coder,没有其他爱好,闲暇之余抱着瞻仰的心态去阅读一下Spring的源码,期许能收获一支半解。要学习Spring的源码,第一步自然是下载和编译Spring的源码,这个我在之前的博文中已经发表过了。具体可参考:《SpringFramework源码下载和编译教程》

面对茫茫多的Spring的工程和代码,香港服务器租用,很多人可能会无从下手。其实想想,Spring也是有入口的,那就是配置文件的加载。Spring容器的构建完全是基于配置文件的配置的。不论是Web工程,还是普通的Java应用,加载Spring配置文件都是首要的工作。所以,我就从配置文件的加载学起。

要加载配置文件,首先当然是要找到该文件。大多数人通常都是在Web应用中使用Spring。网上搜搜配置,配置文件的名字就叫约定的:applicationContext.xml,然后往编译路径下一扔,Spring自然就好用了,就没过多的关注过其他容器初始化的问题。其实,一个自然应该想到的问题就是:一个普通的J2SE应用该如何使用Spring呢?答案很简单:new 出一个ApplicationContext的实例就好了。例如:

只需上述一行代码,一个基于指定的配置文件的Spring容器就初始化完成了。

下面,我们来仔细看看FileSystemXmlApplicationContext这个类:

一共七个构造函数和一个复写的方法。我们现在重点关注构造函数,除前两个之外,其他的构造函数都最终指向构造函数:

只是对没有传入的参数,给了一个默认值。

该构造函数有三个参数:

注:refresh()方法可谓Spring的核心的入口函数,Spring容器的初始化正是由此开始。一些Spring学习的书中,也向学习Spring的读者推荐,如果感到无所适从,可从该方法入手,研究Spring的整个生命周期。后续我们也会从该方法入手重点研究。现在只需理解,香港服务器租用,其为Spring容器初始化的一个“开关”即可。

前两个构造函数与该构造函数最大的区别就是,没有调用refresh函数。也就是说,Spring容器,此时并未初始化。此时如果用getBean方法去获取Bean的实例,会报容器并未初始化的异常。

下面给出一些关于构造函数的测试用例,能更直观、具体的说明问题:

了解这些有什么用?

1. 学会在一个普通的J2SE应用中使用Spring,初始化Spring容器。

2. 了解初始化Spring容器的几种方式和传入的参数,可配合不同的场景使用。例如:在程序运行期动态初始化一个新的Spring容器,包含已经初始化的容器,即可用与parent相关的构造函数。再例如:在可能的特定的场景下,香港虚拟主机,Spring容器需要在特定的实际初始化,可先调用空构造函数,再传入location,再手动refresh。或者直接给refresh传入false,再手动refresh。再比如:配合Spring的foo包,可监控Spring配置文件的变化,利用refresh函数,实时更新Spring容器等等。

3. 其他读者可自行发挥想象~~

下期留待思考的:

1.支持路径格式的研究。(绝对?相对?通配符?classpath格式又如何?)

2. 配合placeholder使用的路径问题研究。

3. 路径如何解析?

OneCoder独立博客地址:

本文出自 “苦逼coder” 博客,谢绝转载!

答:他是憋死的,因为沙漠里没有电线杆撒尿。问:

Spring源码学习-容器初始化之FileSystemXmlApplicationContext(一)构造函数

相关文章:

你感兴趣的文章:

标签云: