程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java應用dom4j解析xml設置裝備擺設文件完成籠統工場反射示例

java應用dom4j解析xml設置裝備擺設文件完成籠統工場反射示例

編輯:關於JAVA

java應用dom4j解析xml設置裝備擺設文件完成籠統工場反射示例。本站提示廣大學習愛好者:(java應用dom4j解析xml設置裝備擺設文件完成籠統工場反射示例)文章只能為提供參考,不一定能成為您想要的結果。以下是java應用dom4j解析xml設置裝備擺設文件完成籠統工場反射示例正文


邏輯描寫:

如今我們想在B層和D層加上接口層,並應用工場。而我們可以將創立B和創立D看做是兩個系列,然後便可以應用籠統工場停止創立了。

設置裝備擺設文件:beans-config.xml。service-class與dao-class分離對應兩個系列的產物。子菜單中id對應接口的定名空間,class對應完成類的定名空間。


[html] view plaincopyprint?

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans>  
         <service-class>  
            <service id="com.xxjstgb.drp.basedata.manager.ItemManager" class="com.xxjstgb.drp.basedata.manager.ItemManagerImpl" />  
            <service id="com.xxjstgb.drp.flowcard.manager.FlowCardManager" class="com.xxjstgb.drp.flowcard.manager.impl.FlowCardManagerImpl" />  
         </service-class>  
         <dao-class>  
            <dao id="com.xxjstgb.drp.basedata.dao.ItemDao" class="com.xxjstgb.drp.basedata.dao.ItemDao4OracleImpl" />  
            <dao id="com.xxjstgb.drp.flowcard.dao.FlowCardDao" class="com.xxjstgb.drp.flowcard.dao.impl.FlowCardDaoImpl" />  
         </dao-class>  
    </beans>  

籠統工場:BeanFactory。經由過程讀取設置裝備擺設文件,獲得相干對象,並將相干創立好的對象保留在Map中。

[java] view plaincopyprint?

    package com.xxjstgb.drp.util;  

    import java.util.HashMap;  
    import java.util.Map;  

    //dom4j  
    import org.dom4j.Document;  
    import org.dom4j.DocumentException;  
    import org.dom4j.Element;  
    import org.dom4j.io.SAXReader;  

    import com.xxjstgb.drp.basedata.dao.ItemDao;  
    import com.xxjstgb.drp.basedata.manager.ItemManager;  
    import com.xxjstgb.drp.flowcard.dao.FlowCardDao;  
    import com.xxjstgb.drp.flowcard.manager.FlowCardManager;  

    /** 
     * 籠統工場,重要創立兩個系列的產物 
     * 1、Manager系列 
     * 2、Dao系列產物 
     * @author liuzhengquan 
     * 
     */  
    public class BeanFactory {  

        private static BeanFactory instance=new BeanFactory();  

        //體系缺省設置裝備擺設文件稱號  
        private final String beansConfigFile="beans-config.xml";  

        //保留Dao相干對象  
        private Document doc;  

        /* 
         * key=設置裝備擺設文件中的id值 
         * value=對應了該Id的對象 
         */  
        private Map serviceMap = new HashMap();//保留Service相干對象  
        private Map daoMap = new HashMap();//保留Dao相干對象  

          
        private BeanFactory(){  
            try {  
                doc=new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream(beansConfigFile));  
            } catch (DocumentException e) {  
                e.printStackTrace();  
                throw new RuntimeException();  
            }  
        }  

        public static BeanFactory getInstance(){  
            return instance;  
        }  

        /** 
         * 依據產物編號獲得Service系列產物 
         * @param serviceId 
         * @return 
         */  
        public synchronized Object getServiceObject(Class c){  
            //假如存在相干對象實例,前往  
            if(serviceMap.containsKey(c.getName())){  
                return serviceMap.get(c.getName());  
            }  
            Element beanElt=(Element)doc.selectSingleNode("//service[@id=\""+ c.getName() + "\"]");  
            String className=beanElt.attributeValue("class");  
            Object service=null;  

            try {  
                service=Class.forName(className).newInstance();  

                //將創立好的對象放到Map中  
                serviceMap.put(c.getName(), service);  
            } catch (Exception e) {  
                throw new RuntimeException();  
            }  
            return service;  
        }  

        /** 
         * 依據產物編號獲得Dao系列產物 
         * @param daoId 
         * @return 
         */  
        public synchronized Object getDaoObject(Class c){  
            //假如存在相干對象實例,前往  
            if(daoMap.containsKey(c.getName())){  
                return daoMap.get(c.getName());  
            }  
            Element beanElt=(Element)doc.selectSingleNode("//dao[@id=\""+c.getName()+"\"]");  
            String className=beanElt.attributeValue("class");  
            Object dao=null;  

            try {  
                dao=Class.forName(className).newInstance();  

                //將創立好的對象放到Map中  
                daoMap.put(c.getName(), dao);  
            } catch (Exception e) {  
                throw new RuntimeException();  
            }  
            return dao;  
        }  

          
        /** 
         * 測試 
         * @param args 
         */  
        public static void main(String[] args){  
            ItemManager itemManager=(ItemManager)BeanFactory.getInstance().getServiceObject(ItemManager.class);  
            System.out.println("itemManager"+itemManager);  

            ItemDao itemDao=(ItemDao)BeanFactory.getInstance().getDaoObject(ItemDao.class);  
            System.out.println("itemDao:"+itemDao);  

            FlowCardManager flowCardManager=(FlowCardManager)BeanFactory.getInstance().getServiceObject(FlowCardManager.class);  
            //FlowCardManager flowCardManager=new FlowCardManagerImpl();  
            System.out.println(flowCardManager);  

            FlowCardDao flowCardDao=(FlowCardDao)BeanFactory.getInstance().getDaoObject(FlowCardDao.class);  
            //FlowCardDao flowCardDao=new FlowCardDaoImpl();  
            System.out.println("flowCardDao:"+flowCardDao);  
        }  

    }  
   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved