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

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

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

    wangflood

    精心維護一個技術blog,為了工作,也是愛好。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      14 Posts :: 19 Stories :: 8 Comments :: 0 Trackbacks
     spring IOC達到松耦合的目的,便于測試。我很喜歡"spirng容器"的說法,spring根據讀取bean.xml,再用java反射機制,組合一些類,完成程序。其實,實現起來也不太難。不信你看。

    模仿spring,BeanFactory
    package com.wang.spring;

    public interface BeanFactory {
        
    public Object getBean(String name);
    }


    主要類:ClassPathXmlApplicationContext,當然spring的這個類里有國際化等功能實現,這里就簡了。
    package com.wang.spring;

    import java.lang.reflect.Method;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.input.SAXBuilder;

    import wang.spring.dao.UserDao;
    import wang.spring.dao.impl.UserDaoImpl;

    public class ClassPathXmlApplicationContext implements BeanFactory {

        
    private Map<String, Object> beans = new HashMap<String, Object>();

        
    // IOC Inverse of Control DI Dependency Injection
        public ClassPathXmlApplicationContext() throws Exception {
            SAXBuilder sb 
    = new SAXBuilder();

            Document doc 
    = sb.build(this.getClass().getClassLoader()
                    .getResourceAsStream(
    "beans.xml")); // 構造文檔對象
            Element root = doc.getRootElement(); // 獲取根元素HD
            List list = root.getChildren("bean");// 取名字為disk的所有元素
            for (int i = 0; i < list.size(); i++{
                Element element 
    = (Element) list.get(i);
                String id 
    = element.getAttributeValue("id");
                String clazz 
    = element.getAttributeValue("class");
                Object o 
    = Class.forName(clazz).newInstance();
                System.out.println(id);
                System.out.println(clazz);
                beans.put(id, o);
    //i=1  new UserDaoImpl();

                
    for (Element propertyElement : (List<Element>) element
                        .getChildren(
    "property")) {
                    String name 
    = propertyElement.getAttributeValue("name"); // 得到userDAO
                    String bean = propertyElement.getAttributeValue("bean"); // u
                    
    //相當于    UserDao u = new UserDaoImpl();
                    Object beanObject = beans.get(bean);// UserDAOImpl instance

                    String methodName 
    = "set" + name.substring(01).toUpperCase()
                            
    + name.substring(1);
                    System.out.println(
    "method name = " + methodName);

                    Method m 
    = o.getClass().getMethod(methodName,
                            beanObject.getClass().getInterfaces()[
    0]);
                    m.invoke(o, beanObject);
                }


            }


        }


        
    public Object getBean(String id) {
            
    return beans.get(id);
        }


    }



    posted on 2010-11-14 09:46 wangflood 閱讀(281) 評論(0)  編輯  收藏 所屬分類: J2EE/SSH

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


    網站導航:
     
    主站蜘蛛池模板: 无人视频在线观看免费播放影院| 亚洲人成未满十八禁网站| 中文字幕在线视频免费| 亚洲Av无码国产情品久久| 黄色大片免费网站| 亚洲国产电影av在线网址| 香蕉免费看一区二区三区| 国产成人亚洲综合无码精品| 在线看片免费人成视频福利| 亚洲av女电影网| 2021久久精品免费观看| 亚洲乱码中文字幕在线| 亚洲 综合 国产 欧洲 丝袜| 黄视频在线观看免费| 久久亚洲精品中文字幕无码| 69免费视频大片| 91在线亚洲综合在线| 国产一区二区三区在线免费观看 | 亚洲综合精品香蕉久久网97| 99re这里有免费视频精品| 亚洲性69影院在线观看| 好男人视频社区精品免费| 免费无码午夜福利片| 久久精品夜色国产亚洲av| 曰曰鲁夜夜免费播放视频| 国产偷国产偷亚洲高清在线| 国产亚洲精品AA片在线观看不加载| 免费av一区二区三区| 亚洲综合一区无码精品| 亚洲午夜无码片在线观看影院猛| 久久aⅴ免费观看| 亚洲成在人线aⅴ免费毛片| 久久久久亚洲精品中文字幕| 精品一区二区三区无码免费视频| 亚洲日韩亚洲另类激情文学| 久久久久国产成人精品亚洲午夜| aⅴ免费在线观看| 一二三区免费视频| 国产精品高清视亚洲一区二区| 亚洲熟妇无码另类久久久| 免费无码肉片在线观看|