打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
构建ApplicationContext对象 * 时,读取指定的文件(xml)
package factory;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/***
 * 需求:
 * 构建ApplicationContext对象
 * 时,读取指定的文件(xml),根据配置
 * 创建对象,并将对象信息存储到
 * map,需要对象时,从map获取
 * @author adminitartor
 */
public class ApplicationContext {
private static Map<String,Object> beanMap=
new HashMap<>();
public ApplicationContext(String file){
init(file);
}
/**初始化对象,然后存储到map*/
private void init(String file){//beans.xml
//1.读取文件
InputStream in=getClass().getClassLoader()
.getResourceAsStream(file);//推荐(直接从类路径下读取)
//2.解析文件(重点dom4j解析,了解 DOM解析,SAX,PULL)
//2.1创建解析器对象
SAXReader sr=new SAXReader();
//2.2读取数据
Document doc=null;
try {
 doc=sr.read(in);
} catch (DocumentException e) {
 e.printStackTrace();
 throw new RuntimeException(e);
}
//2.3获取根元素
Element root=doc.getRootElement();
//2.4获取根元素中的所有bean元素
List<Element> list=root.elements("bean");
//2.5迭代所有bean元素
for(Element e:list){
 String idValue=e.attributeValue("id");
 String clsValue=e.attributeValue("class");
 Object obj=null;
//3.创建对象
 try{
 obj=Class.forName(clsValue).newInstance();
 }catch(Exception e1){
 throw new RuntimeException(e1);
 }
 //4.存储对象
 beanMap.put(idValue, obj);
}
}
/**从map中获取对象*/
public Object getBean(String key){
return beanMap.get(key);
}
/**<T>写到方法的返回值左边时表示此方法
* 为一个泛型方法,具体泛型的类型会由相关
* 参数类型进行决定
* 何为泛型?编译时的一种类型,运行时无效.
* 应用场景?项目中的通用编程
* 泛型应用类型?泛型类,泛型方法
* */
public <T>T getBean(String key,Class<T> cls){
return (T)beanMap.get(key);
}
/**释放资源*/
public void close(){
beanMap.clear();
beanMap=null;
}
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JAXP(Java API for XML Parsing)
使用反射简化繁琐的对对象成员设值取值的过程
XML与JSON学习笔记分享
Java操作XML文件 dom4j 篇
Java解析XML文档――dom解析xml
DOM4j使用教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服