标签:生成 shm tac cat int user cto ted 特点
头部标记 : <?xml version="1.0" encoding="UTF-8"?> 单标签 : <标签名称 属性1="值1" 属性2="值2" .... 属性N="值N" /> 双标签 : <标签名称 属性1="值1" 属性2="值2" .... 属性N="值N">标签之间的内容</标签名称>
创建:
在src包上点击鼠标右键 选择"new" --> "other"
在弹出的对话框 输入 xml 然后选择下面的 XML File选项 点击 "next"
在弹出的页面中我们填写XML文件的文件名 applicationContext.xml
点击 Finish 完成XML的创建
<?xml version="1.0" encoding="UTF-8"?> <beans> <bean id="userDAO" class="com.hnxy.dao.impl.UserDAOImpl" /> <bean id="userService" class="com.hnxy.service.impl.UserServiceImpl" /> </beans>
(dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。)
DOM4J使用以下jar包用来解析XML
具体步骤如下
// 获取XML的位置 InputStream in = this.getClass().getClassLoader().getResourceAsStream("applicationContext.xml"); try { // 开始解析 // 1. 将XML加载到内存中 这个步骤相当于把字节流转换为内存中的XML文件 Document document = new SAXReader().read(in); // 2. 获取XML的根节点 beans Element root = document.getRootElement(); // 3. 找到根节点下的所有bean的子节点 List<Element> elements = root.elements("bean"); // 4. 解析其中的id属性和value属性 for (Element element : elements) { // 获取ID属性 String id = element.attributeValue("id"); String clazz = element.attributeValue("class"); System.out.println(id+":"+clazz); } } catch (DocumentException e) { e.printStackTrace(); }
结果 :
package com.hnxy.utils; 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; public class BeanFactory { // 定义对象保存容器 private static Map<String, Object> objs = new HashMap<String, Object>(); static { // 获取XML的位置 InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("applicationContext.xml"); try { // 开始解析 // 1. 将XML加载到内存中 这个步骤相当于把字节流转换为内存中的XML文件 Document document = new SAXReader().read(in); // 2. 获取XML的根节点 beans Element root = document.getRootElement(); // 3. 找到根节点下的所有bean的子节点 List<Element> elements = root.elements("bean"); // 4. 解析其中的id属性和value属性 for (Element element : elements) { // 获取ID属性 String id = element.attributeValue("id"); String clazz = element.attributeValue("class"); // 通过类名创建对象 Object obj = Class.forName(clazz).newInstance(); // 保存到MAP集合 objs.put(id, obj); } } catch (Exception e) { e.printStackTrace(); } } public static Object getBean(String id) { return objs.get(id); } public static void main(String[] args) { System.out.println(BeanFactory.getBean("userDAO")); } }
使用自定义IOC框架
我们已经编写完了自己的创建对象的工具类,这样如果哪个地方需要这个对象我们就可以调用方法获取这个对象了
标签:生成 shm tac cat int user cto ted 特点
原文地址:https://www.cnblogs.com/zss0520/p/10205813.html