




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毫无疑问,spring是从XML来读取配置信息的。前面写过,在java当中读取XML配置信息的方式有四种。分别是:DOM(JAXP Crimson 解析器)接着是 SAX然后是 JDOM最后是 DOM4J我们先来看使用JDOM从XML当中读取配置信息的方式:JDOM一般和xpath结合使用。来看看IBM一篇关于JDOM和XPATH结合编程的指南。/developerworks/cn/xml/x-jdom/文章我就不引用了。首先下载jdom,并把需要所有的包引入到当前的project当中。直接写我们调试成功能运行的程序:先看看xml文件(这个文件我没有进行任何的改变):/特定的xml文件。 8G 200 1580 10G 500 3000 再来看java文件:import java.util.*;import org.jdom.*;import org.jdom.input.SAXBuilder;import org.jdom.xpath.XPath;/jdom和xpath结合。public class Sample2 public static void main(String args) throws Exception SAXBuilder sb = new SAXBuilder(); /找到文件的位置,整个文档当成一个对象。 /原例子里面是使用的是绝对路径,我们采用从stream当中定位,换句话说还是从classpath当中找。 Document doc = sb.build(Sample2.class.getClassLoader().getResourceAsStream(sample.xml); /root是根对象。 Element root = doc.getRootElement(); /我们添加了一些输出信息 System.out.println(root); /通过xpath拿到节点/HD/disk List list = XPath.selectNodes(root, /HD/disk); /我们添加了一些输出信息 System.out.println(list.size(); for (int i = 0; i list.size(); i+) Element disk_element = (Element) list.get(i); String name = disk_element.getAttributeValue(name); String capacity = ( (Text) XPath.selectSingleNode(disk_element, /diskname= + name + /capacity/text().getTextNormalize(); String directories = ( (Text) XPath.selectSingleNode(disk_element, /diskname= + name + /directories/text().getTextNormalize(); String files = ( (Text) XPath.selectSingleNode(disk_element, /diskname= + name + /files/text().getTextNormalize(); System.out.println(磁盘信息:); System.out.println(分区盘符: + name); System.out.println(分区容量: + capacity); System.out.println(目录数: + directories); System.out.println(文件数: + files); System.out.println(-); 那么我们现在就可以模拟spring的bean容器了。注意这里说的是bean容器,不是bean工厂。首先在我们自己的项目当中,也把jdom所需的所有的类添加进去。先看我们的xml文件: 再看我们访问xml的类:package com.bjsxt.spring.factory;import java.util.HashMap;import java.util.List;import java.util.Map;/使用了jdom,所以需要这些包import org.jdom.Document;import org.jdom.Element;import org.jdom.input.SAXBuilder;import org.jdom.xpath.XPath;/本类从BeanFactory当中继承,所以是实现了bean工厂public class ClassPathXmlApplicationContext implements BeanFactory /定义了一个map容器,需要把id和o对象放到这个容器当中,这个就是spring的bean容器private Map container = new HashMap();/构造方法,当中传进来的参数是文件名,这个文件名就是要解析的xml文件名public ClassPathXmlApplicationContext(String fileName) throws ExceptionSAXBuilder sb = new SAXBuilder();/把filename传递过来,从classpath当中找到文件信息 Document doc = sb.build(this.getClass().getClassLoader() .getResourceAsStream(fileName); /root节点 Element root = doc.getRootElement(); /从beans/bean开始读,注意看xpath的使用 List list = XPath.selectNodes(root, /beans/bean); System.out.println(list.size(); /找到beans当中的每个bean,解析他们的id和class for (int i = 0; i list.size(); i+) /每个element都是一个bean,每个bean都是一个类。 Element bean = (Element) list.get(i); /id就是相当于我们原来的v String id = bean.getAttributeValue(id); /class就是我们原来的值,也就是类的名字。 String clazz = bean.getAttributeValue(class); /得到类的名字以后,就可以通过反射的Class.forName(clazz).newInstance()方法来得到对象 Object o = Class.forName(clazz).newInstance(); /把id和o对象,都添加到容器当中,这里是键值对,也就是说是一个map container.put(id, o); System.out.println(id + + clazz); Overridepublic Object getBean(String id) return container.get(id);最后来看使用者当中怎么调用:package com.bjsxt.spring.factory;import java.io.IOException;import java.util.Properties;public class Test /* * param args * throws IOException */public static void main(String args) throws Exception /得到一个beanFactory对象,因为xml处理类是从beanFactory继承而来BeanFactory f = new ClassPathXmlApplicationContext(com/bjsxt/spring/factory/applicationContext.xml);/通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚姻协议承诺书
- 股权收益权转让协议范例二零二五年
- 二零二五版土地使用权转让合同
- 温室大棚承包合同简单
- 委托招聘协议书范例二零二五年
- 贴片电容购销合同范本
- 混凝土合同范本
- 广东省广州市番禹区2024届中考数学全真模拟试卷含解析
- 业务审计合同样本
- 2025福建建筑安全员A证考试题库及答案
- 南开一模试题及答案物理
- 茶叶生产关键影响因素与高产栽培技术研究
- 施工质量奖惩考核实施细则
- 人教版五年级音乐下册(简谱)第二单元《阿喽喽》教学设计
- 2024-2025学年七年级数学北师大版(2024)下学期期中考试模拟卷B卷(含解析)
- 杭州2025年浙江杭州余杭区余杭街道招聘编外劳务派遣人员25人笔试历年参考题库附带答案详解
- 江苏省2024年中职职教高考文化统考机电一体化专业综合理论真题试卷
- 2025年入团考试练习试题(100题)附答案
- (二模)温州市2025届高三第二次适应性考试地理试卷(含答案)
- JGJ/T235-2011建筑外墙防水工程技术规程
- (正式版)HG∕T 21633-2024 玻璃钢管和管件选用规定
评论
0/150
提交评论