快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
an", new BeanHandler());     saxReader.read(file);    } catch (DocumentException e) {     System.out.println(e.getMessage());    } }

3.ElementHandler,dom4j的ElementHandler接口有两个方法,一个是onStart(),它主要用于处理该 元素的属性以及动态增加新的Handler类;另一个是onEnd(),它主要用于获得该元素的Text文本以及删除 已添加的Handler。

BeanHandler

private class BeanHandler implements ElementHandler {    Object obj = null;    public void .Start(ElementPath path) {     Element beanElement = path.getCurrent();     Attribute classAttribute = beanElement.attribute("class");     Class<?> bean = null;     try {       bean = Class.forName(classAttribute.getText());     } catch (ClassNotFoundException e) {       e.printStackTrace();     }     Field fields[] = bean.getDeclaredFields();     Map<String, Field> mapField = new HashMap<String, Field>();     for (Field field : fields)       mapField.put(field.getName(), field);     try {       obj = bean.newInstance();     } catch (InstantiationException e) {       e.printStackTrace();     } catch (IllegalAccessException e) {       e.printStackTrace();     }     path.addHandler("property", new PropertyHandler(mapField, obj));    }    public void .End(ElementPath path) {     Element beanElement = path.getCurrent();     Attribute idAttribute = beanElement.attribute("id");     beanMap.put(idAttribute.getText(), obj);     path.removeHandler("property");    } }

Java代码实现依赖注入(4)

时间:2011-07-22 51cto博客 zhangjunhd

PropertyHandler

private class PropertyHandler implements ElementHandler {    Map<String, Field> mapField;    Object obj;    public PropertyHandler(Map<String, Field> mapField, Object obj) {     this.mapField = mapField;     this.obj = obj;    }    public void .Start(ElementPath path) {     Element propertyElement = path.getCurrent();     Attribute nameAttribute = propertyElement.attribute("name");     path.addHandler("value", new ValueHandler(mapField, obj,         nameAttribute));     path.addHandler("list", new ListHandler(mapField, obj,         nameAttribute));     path.addHandler("set", new SetHandler(mapField, obj,         nameAttribute));     path.addHandler("map", new MapHandler(mapField, obj,         nameAttribute));     path.addHandler("ref", new RefHandler(mapField, obj,         nameAttribute));    }    public void .End(ElementPath path) {     path.removeHandler("value");     path.removeHandler("list");     path.removeHandler("set");     path.removeHandler("map");     path.removeHandler("ref");    } }

根据setting.xml,我们可以得到各种注入元素的Handler类处理流程图。

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

4. setFieldValue()基于反射机制和相应的类信

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号