Java代码实现依赖注入
时间:2011-07-22 51cto博客 zhangjunhd
这里将模仿Spring实现一种基于xml配置文件的依赖注入机制。文件中将实现3中注入,一是单值注入 ,包括int,float,double,char等,也包括String注入;二是Java容器注入,包括List,Set,Map三种 容器的注入,最后一种是java bean对象注入。
实现的机制是,使用Dom4j对xml配置文件进行解析,这里使用dom4j的Element Handler机制,一种类 似与责任链模式的实现机制;对于java对象的构建使用反射机制,这里主要是针对得到的类的Field进行 set赋值。我试图通过调用Method的invoke方法调用类本身的setter方法,但是由于通过xml解析得到的值 都是String,如果将这些String动态的转换为相应的确定类型是个难点,Method的invoke方法,如果形参 是int,而传入java.lang.Integer,它不会认,所以尝试失败,只能通过Field的set方法传入特定值。
配置文件setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="me" class="com.zj.ioc.di.imp.Person">
<property name="name">
<value>ZJ</value>
</property>
<property name="age">
<value>26</value>
</property>
<property name="height">
<value>1.78</value>
</property>
</bean>
<bean id="you" class="com.zj.ioc.di.imp.Person">
<property name="name">
<value>Mary</value>
</property>
<property name="age">
<value>27</value>
</property>
<property name="height">
<value>1.66</value>
</property>
</bean>
<bean id="myList" class="com.zj.ioc.di.imp.ListOne">
<property name="msg">
<list>
<value>java</value>
<value>c</value>
<value>windows</value>
</list>
</property>
</bean>
<bean id="mySet" class="com.zj.ioc.di.imp.SetOne">
<property name="msg">
<set>
<value>tom</value>
<value>cat</value>
<value>dog</value>
</set>
</property>
</bean>
<bean id="myMap" class="com.zj.ioc.di.imp.MapOne">
<property name="msg">
<map>
<entry key="c">
<value>CHINA</value>
</entry>
<entry key="j">
<value>JAPAN</value>
</entry>
<entry key="k">
<value>KOREA</value>
</entry>
</
|