码迷,mamicode.com
首页 > 编程语言 > 详细

Spring模拟BeanFactory实现

时间:2014-11-03 13:03:47      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:des   io   ar   os   java   for   sp   strong   div   

实现Spring中BeanFactory的案例

1.设计模式(工厂)

2.jdom

3.Java反射机制

 

bubuko.com,布布扣

 

1.beans.xml

bubuko.com,布布扣

 

2.DAO

bubuko.com,布布扣

3.Impl

bubuko.com,布布扣

4.Service

bubuko.com,布布扣

 

5.BeanFactory

bubuko.com,布布扣

6.ClassPathXmlApplication

 

public class ClassPathXmlApplicationContext implements BeanFactory {

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

    public ClassPathXmlApplicationContext() throws Exception {
        SAXBuilder sb = new SAXBuilder();
        // 构造文档对象
        Document doc = sb.build(this.getClass().getClassLoader()
                .getResourceAsStream("beans.xml"));
        // 获取元素HD
        Element root = doc.getRootElement();
        // 取得名字为bean的所有元素
        List list = root.getChildren("bean");
        //
        for (int i = 0; i < list.size(); i++) {
            Element element = (Element) list.get(i);
            String id = element.getAttributeValue("id");
            String classes = element.getAttributeValue("class");
            Object o = Class.forName(classes).newInstance();
            System.out.println(id);
            System.out.println(classes);
            beans.put(id, o);
            for (Element propertyElement : (List<Element>) element
                    .getChildren("property")) {
                String name = propertyElement.getAttributeValue("name");
                String bean = propertyElement.getAttributeValue("bean");
                Object beanObject = beans.get(bean);
                String methodName = "set" + name;
                System.out.println("method name = " + methodName);
                Method m = o.getClass().getMethod(methodName,
                        beanObject.getClass().getInterfaces()[0]);
                m.invoke(o, beanObject);
            }
        }

    }

    /*
     * (non-Javadoc)
     *
     * @see com.yg.Spring.BeanFactory#getBean(java.lang.String)
     */
    @Override
    public Object getBean(String id) {
        // TODO Auto-generated method stub
        return beans.get(id);
    }

}

7.Test

 

bubuko.com,布布扣

Spring模拟BeanFactory实现

标签:des   io   ar   os   java   for   sp   strong   div   

原文地址:http://www.cnblogs.com/yg-Manager/p/4070913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!