模拟spring容器实例化
来源:互联网 发布:scratch少儿趣味编程 编辑:程序博客网 时间:2024/06/06 08:40
package com.springContext;public class SpringBean {private String id ;private String className ;public SpringBean(String id, String className) {super();this.id = id;this.className = className;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getClassName() {return className;}public void setClassName(String className) {this.className = className;}}
package com.springContext;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.DocumentException;import org.dom4j.Element;import org.dom4j.XPath;import org.dom4j.io.SAXReader;public class LuweiClassPathXmlApplicationContext {private List<SpringBean> beans = new ArrayList<SpringBean>() ;private Map<String, Object> sigletons = new HashMap<String, Object>() ;public LuweiClassPathXmlApplicationContext(String fileName) {this.readXmlFile(fileName);//读取xml配置文件this.instanceBean() ;}private void instanceBean(){//反射技术实例化beanfor(SpringBean springBean:beans){if(springBean.getClassName()!=null&&!"".equals(springBean.getClassName().trim())){try {sigletons.put(springBean.getId(), Class.forName(springBean.getClassName()).newInstance()) ;//反射技术} catch (Exception e) {e.printStackTrace();}}}}private void readXmlFile(String fileName){SAXReader reader = new SAXReader() ; Document document =null;URL xmlPath = this.getClass().getClassLoader().getResource(fileName) ;try {document = reader.read(xmlPath) ;} catch (DocumentException e) {e.printStackTrace();}Map<String, String> nsMap = new HashMap<String, String>() ;nsMap.put("ns", "http://www.springframework.org/schema/beans") ;//加入命名空间XPath xPath = document.createXPath("//ns:beans/ns:bean") ;//创建beans/bean查询路径xPath.setNamespaceURIs(nsMap) ;//设置命名空间//获取文档下的所有bean节点List<Element> elements = xPath.selectNodes(document) ;for(Element element:elements){String id = element.attributeValue("id") ;String className = element.attributeValue("class") ;SpringBean bean = new SpringBean(id, className) ;beans.add(bean);}}public Object getBean(String beanName){return sigletons.get(beanName) ;}}
进行代码的测试:
//使用自己写的类进行模拟spring框架的作用//LuweiClassPathXmlApplicationContext luweiClassPathXmlApplicationContext = new LuweiClassPathXmlApplicationContext("applicationContext.xml") ;//AdminService adminService = (AdminService) luweiClassPathXmlApplicationContext.getBean("adminService") ;
- 模拟spring容器实例化
- 实例化Spring容器
- Spring Ioc 容器实例化容器
- spring实例化IOC容器
- 实例化Spring IoC容器
- 实例化spring IoC容器
- 实例化Spring容器示例
- Spring2.5学习1.2_模拟Spring容器对bean进行实例化
- 模拟spring,自定义容器一(属性注入、Bean的实例化)
- 实例化Spring容器,实例化bean
- 模拟spring容器
- 常用实例化Spring容器的方法
- 实例化spring容器两种方式
- 实例化Spring Ioc容器,生成SequenceGenerator
- Spring配置文件及容器的实例化
- Spring容器中Bean的实例化
- 模拟spring中的IOC容器
- Spring容器实例化、bean的实例化
- 读朱兆祺攻破C语言之五---关键字、运算符、语句
- 开始进行 64 位 Windows 系统编程之前需要了解的所有信息
- 优化邮件营销标题的实战技巧
- Core Audio APIs 技术笔记一(扬声器音量设置)
- java中的各种数据类型在内存中存储的方式
- 模拟spring容器实例化
- Oracle创建表空间、创建用户以及授权、查看权限
- 队列和栈
- Linux C内联汇编用法
- 一个apk多个icon
- CSS 常用集锦(1)div+css文字垂直居中
- redis命令总结
- ArcGIS Desktop开发框架快速搭建【一】
- 如何使用KeyChain保存和获取UDID