简单模拟Spring管理Bean对象
2014-02-20 09:34
447 查看
1: 首先我们要利用dom4j进行xml的解析,将所有的bean的配置读取出来。
2:利用java的反射机制进行对象的实例化。
3: 直接获得对象
2:利用java的反射机制进行对象的实例化。
3: 直接获得对象
package cn.Junit.test; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.XPath; import org.dom4j.io.SAXReader; import org.springframework.beans.factory.config.BeanDefinition; public class MyClassPathXmlApplicationContext { private String filemame; private List<DefBean> list = new ArrayList<DefBean>(); private Map<String, Object> singletons = new HashMap<String, Object>(); public MyClassPathXmlApplicationContext() { super(); // TODO Auto-generated constructor stub } public MyClassPathXmlApplicationContext(String filemame) { //1. 读取XML配置文件 this.readXML(filemame); //2.实例化对象 this.instanceBean(); } private void instanceBean() { for (DefBean bean : list) { try { singletons.put(bean.getId(), Class.forName(bean.getClassName()).newInstance()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private void readXML(String filemame) { SAXReader saxReader = new SAXReader(); Document document = null; try { URL xmlpath = this.getClass().getClassLoader() .getResource(filemame); document = saxReader.read(xmlpath); Map<String, String> nsMap = new HashMap<String, String>(); nsMap.put("ns", "http://www.springframework.org/schema/beans");// 加入命名空间 XPath xsub = document.createXPath("//ns:beans/ns:bean");// 创建beans/bean查询路径 xsub.setNamespaceURIs(nsMap);// 设置命名空间 List<Element> beans = xsub.selectNodes(document);// 获取文档下所有bean节点 for (Element element : beans) { String id = element.attributeValue("id");// 获取id属性值 String clazz = element.attributeValue("class"); // 获取class属性值 DefBean bean = new DefBean(id, clazz); list.add(bean); } } catch (Exception e) { e.printStackTrace(); } } //3. 获得bean对象 public Object getBean(String key) { return singletons.get(key); } }
相关文章推荐
- Spring整合jsf的管理bean对象
- 基于Spring DM管理的Bundle获取Spring上下文对象及指定Bean对象
- Spring管理的Bean对象默认是单例模式,怎么解决线程安全问题
- spring-02 spring的bean管理(使用注解方式创建对象 附代码)
- Spring 使new方法创建的对象可以引用spring管理的bean.
- QLExpress脚本语言技术讲解(4)------扩展QLExpress来管理spring的bean,写出简单的脚本语言框架
- 简单模拟 spring的bean容器的实现
- Servlet中获取spring bean的管理对象
- 利用Java反射机制创建对象,Spring管理Bean原理 例子。
- Spring源码阅读——简单模拟Spring的控制反转IOC和依赖注入(Bean的加载和获取)
- Spring的bean管理-注解创建对象
- Java 代码获取spring管理的bean对象
- Spring笔记——模拟spring的bean管理原理以及依赖注入原理
- 简单模拟spring装载注入bean原理
- 【Spring】【对<bean>注入各种信息】【简单属性,对象属性,集合属性,构造器】
- 170630、springboot编程之普通类中调用spring管理的bean对象
- 简单模型剖析Spring管理Bean的原理
- Spring的bean管理(注解创建对象)
- Spring的bean管理(注解创建对象)
- spring-01 spring的bean管理(使用配置文件方式创建对象 附代码)