简单Spring容器实现
?
在写完《IOC原理分析》,本来就准备写这个《简单Spring实现》的,
<!ELEMENT beans (bean*)><!ELEMENT bean (property)>
<!--property的子属性要么是直接使用的值传递类型,此时,设置value属性的类型为#PCDATA类型要么是需要指向其他引用的引用类型,此时,设置该元素为空元素,--><!ELEMENT property (value|ref)><!ELEMENT value (#PCDATA)><!ELEMENT ref EMPTY>
<!--设置bean的属性每个bean必须有个ID属性,因为这个属性是唯一的表示这个bean,所以属性类型为ID,特征为#REQUIRED,每个bean还必须有class属性,每个类可以有多个对象,所以此属性不唯一,但是必须--><!ATTLIST bean id ID #REQUIRED><!ATTLIST bean class CDATA #REQUIRED><!--设置每个property的属性--><!ATTLIST property name CDATA #REQUIRED><!--设置ref元素的id属性类型为IDREF,值类型为#REQUIRED通过让它指向别的Bean的ID来完成完成引用(依赖就是这样的注入)--><!ATTLIST ref id IDREF #REQUIRED>?
?
?
?
?
??
?
package cn.javamzd.MySpring;import cn.javamzd.spring.pojo.Person;public class Test {/** * @param args */public static void main(String[] args) {Context c=new Context("G:\\Android\\MySpring\\src\\cn\\javamzd\\MySpring\\config.xml");Person zhangsan=(Person)c.getBean("zhangsan");zhangsan.petSay();}}?
?好了,结果很显然,我就不说了
?至此,我们的一个简单的Spring容器已经算是完全实现好了,我们可以很爽的进行IOC了。
?
当然,还是那句,这只是一个我画了一天时间设计出来的DEMO,肯定还会有比较多bug的,在很多严格追求代码质量和安全的人眼里
或许我这写的也全是些垃圾吧。
?
个人练习,欢迎大家拍砖!
?
1 楼 juda 2010-12-22 精神可嘉,不用管水平如何 2 楼 yixiandave 2010-12-24 Beans类的属性是否可以调整为static呢,这样也可以保证Beans不会因为丢失对象而丢失所有Bean对象 3 楼 java_mzd 2010-12-24 yixiandave 写道Beans类的属性是否可以调整为static呢,这样也可以保证Beans不会因为丢失对象而丢失所有Bean对象