栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring创建对象之解耦原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring创建对象之解耦原理

package com.itheima.factor;


import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

import java.io.InputStream;


//生产指定id 的对象实例
public class BeanFactory {
    public static Object getBean(String id) {
        try {
            //1,类加载器读取beans.xml
            InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("beans.xml");

            //2,dom4j解析xml
            Document document = new SAXReader().read(in);
            //3,编写xpath表达式
            String xpath = "//bean[@id='"+id+"']";
            //4,解析指定的id标签
            Element bean = (Element) document.selectSingleNode(xpath);
            //5,获取class属性值
            String className = bean.attribute("class").getValue();
            //6,反射创建对象实例返回
            return Class.forName(className).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("对象创建失败");


        }

    }
}

单例对象

package com.itheima.factor;


import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


//生产指定id 的对象实例
public class BeanFactory {
    private static Map ioc =new HashMap<>();

    static{
        try {
            //1,类加载器读取beans.xml
            InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("beans.xml");

            //2,dom4j解析xml
            Document document = new SAXReader().read(in);
           //解析所有的bean标签
            String xpath = "//bean";
            List elementList = document.selectNodes(xpath);
            //遍历
            for (Element element : elementList) {
                String id = element.attributeValue("id");
                String className = element.attributeValue("class");
                Object instanse = Class.forName(className).newInstance();
                ioc.put(id,instanse);
            }


        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("对象创建失败");


        }
    }
    public static Object getBean(String id) {

    return ioc.get(id);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858055.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号