快速业务通道

Java代码实现依赖注入 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

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>       </

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号