李乾坤的博客

自己动手写spring(六) 支持FactoryBean

前言 为什么需要工厂bean?回答这个问题,首先要回答下为什么需要工厂模式?简单说,就是不用new xxx()了。用new xxx()有什么不好呢?简单说就是:不能适应变化。对于传统的new xxx(),假设这个代码有10个地方使用,那么当xxx()改变时,你便要更改10个地方的代码(好吧,我承认,借助于ide,这个优势不是很明显)。比较简单的方式就是,提供一个专门的类负责构造这个bean...

自己动手写spring(九) 总结

前言 作为一个使用轮子的程序员第一次写了轮子,感觉还是满兴奋的。笔者在看很多项目的源码时,经常是看了忘,忘了看。在反思这个现象时,笔者认为:很多代码固然很精巧,但因为读者没有设身处地考虑过实际的情景,对为什么要这样做没有直接的感觉,导致印象不深刻。 还有一个重要原因是,大部分框架的代码在发展过程中都经过重新设计,这固然必要,但判空、处理异常以及复杂的父子关系等掩盖了最初的思路,容易将读者...

自己动手写spring(二) 创建一个bean工厂

前言 前文虽然以spring配置文件的样式,根据配置文件搞了一个类出来,但离工具化的应用还很远,本文再进一步。 处理类之间的关系 前文的例子只创建了较为简单的beanB类,现在我们创建beanA类。从模仿spring beanFactory的getBean方法开始。getBean方法体现了spring的一个点:bean只有在使用时才会真正被创建。 getBean的基本思路是,根据be...

自己动手写spring(一) 使用digester

前言 本来想熟悉下digester的使用,写着写着发现,可以搞一个类似spring的东西的来,将过程记录下来,与大家分享。 例子中很多代码没有优化,基本没有异常处理和判空操作,这是我的一个坏习惯,先奔着目的去,实现成功后再重构。但这样的代码,更易看懂,优化后的代码反而掩盖了很多思路和思想,尤其容易让人分不清重点(因为算是技巧的地方太多了)。 项目源码的git clone地址:git@g...