1.先导入依赖
dom4j
dom4j
1.6.1
工厂类
package com.studay.factory;
import org.dom4j.document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MyBeanFactory {
//创建一个map集合,模拟IOC容器
private static Map map = new HashMap();
static{
try{
//使用dom4j 解析xml文件
//第一步 :获得一个解析器
SAXReader saxReader = new SAXReader();
//第二步:读取外部的配置文件
String path = "src/main/resources/applicationContext.xml";
//第三步:读取整个文档对象
document document = saxReader.read(path);
//第四步:获取根节点
Element rootElement = document.getRootElement();
//第五步:获取根节点下的所有bean 标签对应的节点:
List beans = rootElement.elements("bean");//bean
//第六步 :
for (Element bean : beans){
//获取id属性对应的值
String id = bean.attributevalue("id");
//获取class属性对应的值:【全限定类名】
String aClass = bean.attributevalue("class");
//通过反射创建对象
Class> clz = Class.forName(aClass);
//创建对象
Object o = clz.newInstance();
//存容器 id做key值,创建出来的对象为value值
map.put(id,o);
}
}catch (Exception e){
e.printStackTrace();
}
}
public static Object getBean(String id){
return map.get(id);
}
}
测试类
@Test
public void test1(){
//1.获取ioc容器对象
MyBeanFactory myBeanFactory = new MyBeanFactory();
//2.从容器获取bean对象
User user = (User)myBeanFactory.getBean("user");
user.say();
}



