Spring读取xml配置文件的原理与实现
2017-11-20 16:26
435 查看
http://www.cnblogs.com/wyq178/p/6843502.html点击打开链接
package com.spring.test; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.File; import java.lang.reflect.Method; import java.util.HashMap; import java.util.List; public class ApplicationXmlPathContext implements ApplicationContext{ public static String PATH = null; public static HashMap<String, Object> hashMap = new HashMap<String,Object>(); public ApplicationXmlPathContext(String xml) { //获取文件的地址 PATH = this.getClass().getClassLoader().getResource(xml).getPath(); parsexml(PATH); } public void parsexml(String PATH){ try{ SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File(PATH)); Element ele = document.getRootElement(); //listNodes(ele,null,null); List<Element> elements = ele.elements(); //将每一个标签保存到集合。用id进行区分 for (Element e : elements) { hashMap.put(e.attributeValue("id"),e); } }catch (DocumentException e) { } } public Object getObj(String id) { Element e = (Element) hashMap.get(id); String className = e.attributeValue("class"); Class c1 = null;Object obj = null; try { c1 = Class.forName(className); obj = c1.newInstance();//利用反射创建对象 } catch (Exception e1) { e1.printStackTrace(); } List<Element> elements = e.elements(); for (Element element : elements) { //List attributes = element.attributes(); String elementName = element.attributeValue("name"); String elementValue = element.attributeValue("value"); Method[] methods = c1.getMethods(); for(int j =0;j<methods.length;j++) { try { if(methods[j].getName().indexOf("set")!=-1) { if(methods[j].getName().substring(3).toLowerCase().equals(elementName)) { methods[j].invoke(obj,elementValue); //调用其配置的set方法,将属性注入对象 } } } catch (Exception e1 ) { e1.printStackTrace(); } } } return obj; } public Object getBean(String id) { return getObj(id); } public static void main(String[] args) { ApplicationContext ac = new ApplicationXmlPathContext("application.xml"); Student Student = (Student)ac.getBean("Student"); System.out.println(Student.getAdd()); // String add = studentService.getStudent().getAdd(); // String name = studentService.getStudent().getAdd(); // // System.out.println("i,am="+name+"==add=="+add); // System.out.println(PATH); } }
相关文章推荐
- Spring读取xml配置文件的原理与实现
- Spring读取xml配置文件的原理与实现
- Spring依赖注入的XML配置文件的实现思想(1)——准备工作:如何读取XML的文件的内容
- 读取Spring配置文件 main方法里面测试实现功能
- spring中读取xml配置文件、获取bean的几种方式
- 模拟spring的注入和读取配置文件(ApplicationContext.xml)
- Spring的xml配置bean文件原理-[Java反射机制]
- Spring依赖注入的XML配置文件的实现思想(2)——简单的实现
- web.xml中通过contextConfigLocation的读取spring的配置文件
- 读取Spring的配置文件applicationContext.xml几种方法
- spring读取properties和xml配置文件的方法
- 三种方式实现Flex读取XML配置文件
- 使用Spring读取xml文件中的配置信息
- spring中读取xml配置文件、获取bean的几种方式
- AJAX实现手动配置的xml文件读取
- 读取applicationContext.xml(spring配置文件)文件
- spring中读取xml配置文件、获取bean的几种方式
- spring中读取xml配置文件、获取bean的几种方式
- spring 使用xml配置文件实现quartz作业调度