Spring就是通过工厂+反射将我们的bean放到它的容器中的
来源:互联网 发布:照片日期添加软件 编辑:程序博客网 时间:2024/05/23 01:58
Spring容器的原理,其实就是通过解析xml文件,或取到用户配置的bean,然后通过反射将这些bean挨个放到集合中,然后对外提供一个getBean()方法,以便我们获得这些bean。下面是一段简单的模拟代码:
package com.tgb.spring.factory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
public class ClassPathXmlApplicationContext implements BeanFactory {
//容器的核心,用来存放注入的Bean
private Map container = new HashMap();
//解析xml文件,通过反射将配置的bean放到container中
public ClassPathXmlApplicationContext(String fileName) throws Exception{
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(this.getClass().getClassLoader().getResourceAsStream(fileName));
Element root = doc.getRootElement();
List list = XPath.selectNodes(root, "/beans/bean");
//扫描配置文件中的bean
for (int i = 0; i < list.size(); i++) {
Element bean = (Element) list.get(i);
http://dfeej.info;
http://rtkuh.info;
http://xrtyf.info;
http://qefky.info;
http://whjir.info;
http://dfew.info;
http://cbjya.info;
http://qwfgr.info;
http://kuyhb.info;
http://qjyt.info;
http://wrtu.info;
http://xdes.info;
http://mkoy.info;
http://txbf.info;
http://wfkm.info;
http://njer.info;
http://www.dfeej.info;
http://www.rtkuh.info;
http://www.xrtyf.info;
http://www.qefky.info;
http://www.whjir.info;
http://www.dfew.info;
http://www.cbjya.info;
http://www.qwfgr.info;
http://www.kuyhb.info;
http://www.qjyt.info;
http://www.wrtu.info;
http://www.xdes.info;
http://www.mkoy.info;
http://www.txbf.info;
http://www.wfkm.info;
http://www.njer.info;
http://yuip.info;
http://fwqw.info;
http://hyui.info;
http://q237.info;
http://www.yuip.info;
http://www.fwqw.info;
http://www.hyui.info;
http://www.q237.info;
http://gsfea.info;
http://swzsa.info;
http://123wb.info;
http://ts235.info;
http://dt098.info;
http://sbr69.info;
http://xdfth.info;
http://dft2.info;
http://dvny6.info;
http://rh5n.info;
String id = bean.getAttributeValue("id");
String clazz = bean.getAttributeValue("class");
Object o = Class.forName(clazz).newInstance();
container.put(id, o);
}
}
@Override
public Object getBean(String id) {
return container.get(id);
}
}
首先声明一个存放bean的Map,然后通过jdom解析配置文件,循环遍历所有的节点,并通过反射将它们放到我们之前声明的Map中。然后提供一个getBean()的方法,让我们可以通过bean的Id来找到我们想要的bean。
下面是一个简单的xml配置文件:
- Spring就是通过工厂+反射将我们的bean放到它的容器中的
- 关于spring的bean工厂和ApplicationContext容器的区别
- Spring的Bean工厂
- spring(12) Spring的通过工厂方法配置Bean
- 通过ApplicationContextAware获取spring容器中的bean
- 通过ApplicationContextAware获取spring容器中的bean
- spring中通过ApplicationContext获取bean和通过bean工厂获取bean的区别
- 容器中的工厂Bean
- Java中的反射及Bean容器的实现
- 通过实例理解Spring的Bean工厂和AOP框架
- spring管理bean的生命周期与spring通过工厂方法配置bean
- 理解Spring的Bean工厂
- 理解Spring的Bean工厂
- spring bean工厂和bean的id
- Spring容器-Bean的生命周期
- Spring容器-Bean的生命周期
- 工厂模式---模拟Spring的Bean工厂
- Spring容器中的Bean
- Standardization, or mean removal and variance scaling
- /usr: 目录
- Linux设置环境变量小结
- android JUnit单元测试
- Xlight-让FTP搭建变得如此容易
- Spring就是通过工厂+反射将我们的bean放到它的容器中的
- 将Spring源码导入eclipse步骤
- 设计模式六大原则
- Fiddler-强悍开源HTTP调试代理工具
- <context:component-scan>使用说明
- /var: 目录
- python网络爬虫入门(一)——简单的博客爬虫
- 【读书笔记】java语言与面向对象程序设计2:Java语言基础
- CSS规则的执行顺序