| 网站首页 | 技术文章 | 下载频道 | 博客 | 编程论坛 |
 
| 技术教程首页 | 开发语言 | WEB开发 | .NET技术 | 数据库 | 操作系统 | 网页制作 |
 
 
您现在的位置: 编程中国 >> 技术教程 >> Web开发 >> JSP >> JSP技术资料 >> 正文
  ►  自己写个简单的IOC容器
自己写个简单的IOC容器
作者:huwangvs    阅读人次:……    文章来源:本站原创    发布时间:2008/10/15    网友评论()条
 

原帖及讨论:http://bbs.bccn.net/thread-238352-1-1.html

第一次看spring的时候,会感觉IOC好神奇阿。不需要设置值,用的时候取就可以了。那么它是怎么实现的呢?核心就是IOC容器。那么它有多神秘呢额?其实很简单,就是读取配置文件,生成对应的Bean,再将值赋给那个Bean就行了,取的时候直接用那个getBean方法去取就行了。
废话少说,我们自己来写一个简单的IOC容器,来证明其实它就是那么回事。
名字我们完全按照Spring的来,让测试起来就感觉在用Spring一样。
我们的测试例子是这样的,两个类,User和People,User里又name和age,People里又User的引用。调用People里的User里的say方法,打印。先看这两个类。
User类
 

People类
 

没有需要废话的地方吧 ?
接着我们写个配置文件,放到src目录下。
applicationContext.xml
 

和Spring的配置文件又区别吗?

然后呢,我们来写IOC,首先声明个接口!
ApplicationContext
 

接着是实现。ClassPathXMLApplicationContext类。

首先是构造方法
 

就是根据文件名,从类路径下去读取那个xml文件,然后调用readXML()去读取xml文件,生成相应的Bean并赋值放到一个map里。

readXML()方法
 

这个方法就是IOC核心了,这里我用的是jdom来处理xml文件的,dom4j也行,无所谓。
1.是使用的XPath来读取的xml,如果不熟可以看看资料。
2.取得定义的类,实例化并取得所有定义的方法。
3.取出所有以set开头的方法。
4.如果xml定义里面的property有name属性就赋值
5.如果没有name属性就用ref属性来链接其他 bean(可以看出,带ref一定要在要链接的bean后面,如果没有是查不到的。)

最后写个类测试一下。
 

和Spring没区别吧?看看结果吧

OK。IOC其实就是这么简单,这个只是简单的实现,要深入研究,就去看Spring的源代码吧。

MyCodes.tar.gz

 

 
文章录入:静夜思    责任编辑:静夜思 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    原创地带
    24小时热门帖子