<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 17,  comments - 12,  trackbacks - 0

    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Method;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import org.apache.commons.beanutils.ConvertUtils;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.XPath;
    import org.dom4j.io.SAXReader;

    public class wyzClassPathXMLApplicationContext {
     
     private List<BeanDefinition> beanDefines = new ArrayList<BeanDefinition>();
     private Map<String,Object> sigletons =new HashMap<String,Object>();
     
     
     public wyzClassPathXMLApplicationContext(String filename){
      this.readXML(filename);
      this.instanceBeans();
      this.injectObject();
      
      
      
     }
     private void injectObject() {
      for(BeanDefinition beanDefinition : beanDefines){
       
       Object bean=sigletons.get(beanDefinition.getId());
       if(bean!=null){
       try{
       
        PropertyDescriptor[] ps = Introspector.getBeanInfo(bean.getClass()).getPropertyDescriptors();
        for(PropertyDefinition propertyDefinition: beanDefinition.getPropertys()){
         for(PropertyDescriptor properdesc :ps){
          if(propertyDefinition.getName().equals(properdesc.getName())){
           Method setter=properdesc.getWriteMethod();
           if(setter!=null){
            Object value =null;
             if(propertyDefinition.getRef()!=null && !"".equals(propertyDefinition.getRef().trim())){
                  value = sigletons.get(propertyDefinition.getRef());

              }else{
                value = ConvertUtils.convert(propertyDefinition.getValue(),properdesc.getPropertyType());
              }
                setter.setAccessible(true);
                setter.invoke(bean, value);
           }
           break;
          }
         }
        
          }
        
       }catch(Exception e){
        e.printStackTrace();
       
        
       
         
        }
        
       }
      }
      
     }
     private void instanceBeans() {
      for(BeanDefinition beanDefinition : beanDefines){
       try{
        if(beanDefinition.getClassName()!= null && !"".equals(beanDefinition.getClassName().trim()))
         sigletons.put(beanDefinition.getId(), Class.forName(beanDefinition.getClassName()).newInstance());
        
       }catch(Exception e){
        e.printStackTrace();
       }
      }
      
     }
     private void readXML(String filename) {

           SAXReader saxReader = new SAXReader();
           Document document = null;
           try{
           
            URL xmlpath = this.getClass().getClassLoader().getResource(filename);
            document = saxReader.read(xmlpath);
            Map<String,String> nsMap = new HashMap<String,String>();
           
            nsMap.put("ns","http://www.springframework.org/schema/beans");//加入命名空間
           XPath xsub = document.createXPath("http://ns:beans/ns:bean");//創(chuàng)建/beans/bean的查詢路徑
           
            xsub.setNamespaceURIs(nsMap);//設(shè)置命名空間
            List<Element> beans = xsub.selectNodes(document);//獲取文檔中所有bean節(jié)點
            for(Element element : beans){
                String id = element.attributeValue("id");//獲取id屬性
                String clazz = element.attributeValue("class");//獲得所有class屬性
                BeanDefinition beanDefine = new BeanDefinition(id,clazz);
               
                XPath propertysub = element.createXPath("ns:property");
                propertysub.setNamespaceURIs(nsMap);
                List<Element> propertys = propertysub.selectNodes(element);
                for(Element property: propertys){
                 String propertyname = property.attributeValue("name");
                 String propertyref=property.attributeValue("ref");
                 String propertyvalue=property.attributeValue("value");
                
                 System.out.println(propertyname+propertyref+ propertyvalue);
                
                 PropertyDefinition propertyDefinition = new PropertyDefinition(propertyname,propertyref,propertyvalue);
                 beanDefine.getPropertys().add(propertyDefinition);
                
                
                }
               
                beanDefines.add(beanDefine);
               
            }
           
           }catch(Exception e){
            e.printStackTrace();
           
           }
          
      
     }
     public Object getBean(String beanName){
         return this.sigletons.get(beanName);
        
     }

    }

    posted on 2009-03-31 16:05 asiawang 閱讀(331) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(3)

    隨筆檔案

    文章檔案

    友情連接

    搜索

    •  

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 久草视频在线免费看| 情侣视频精品免费的国产| 久久久久免费看成人影片| 免费鲁丝片一级在线观看| 亚洲乱码日产精品a级毛片久久 | 国产精品视_精品国产免费| 亚洲日韩中文无码久久| 学生妹亚洲一区二区| 九九99热免费最新版| 女人张开腿等男人桶免费视频| 亚洲亚洲人成综合网络| 色www永久免费网站| 国产裸模视频免费区无码| 色噜噜的亚洲男人的天堂| 222www在线观看免费| 中文字幕亚洲综合久久菠萝蜜| 亚洲欧美国产欧美色欲| 蜜桃AV无码免费看永久| 亚洲一区二区三区深夜天堂| 精品国产免费一区二区三区香蕉 | 国产成人A亚洲精V品无码| 国产精品免费观看调教网| 亚洲三级中文字幕| 最好免费观看韩国+日本| 又硬又粗又长又爽免费看 | 亚洲最大无码中文字幕| 99免费在线观看视频| 亚洲中文字幕无码mv| 亚洲AV无码专区日韩| 无码亚洲成a人在线观看| 成人性生交大片免费看午夜a| 亚洲国产成人久久三区| 99久久久国产精品免费牛牛四川| 亚洲人成电影网站| 免费一看一级毛片| 国产成人综合亚洲一区| 国产成人精品高清免费| 国产伦精品一区二区免费| 亚洲六月丁香六月婷婷蜜芽| 国产成人免费福利网站| 免费福利在线视频|