理解Spring框架---利用,xml,java反射简单实现Spring

对于Spring框架的简单模拟:

     a).读取xml配置文件

     b.)利用java反射机制获取对象


第一步:创建一个接口,定义一个获取对象的方法getBean():

public interface BeanFactory {
	public  Object  getBean(String name);
}


第二步:创建一个类XmlContext,实现Beanfactory接口中的getBean方法:

public class XmlContext implements BeanFactory {
	// 对象名加对象实例
	private Map<String, Object> beans = new HashMap<String, Object>();

	// 利用jdom读取xml文件获取对象名,通过反射获取对象
	public XmlContext() throws Exception {
		SAXBuilder builder = new SAXBuilder();
		InputStream file = new FileInputStream("test.xml");
		Document document = builder.build(file);// 获得文档对象
		Element root = document.getRootElement();// 获得根节点
		List<Element> list = root.getChildren();
		for (Element elements : list) {
			// 获取属性值,即为对象的名字
			String ObjectName = elements.getAttributeValue("id");
			// 在获取类的路径,在通过java反射获取类的类类型,在获取该类的对象
			String classpath = elements.getAttributeValue("class");
			Object obj = Class.forName(classpath).newInstance();
			beans.put(ObjectName, obj);
			// 获取子节点下的property节点
			List<Element> eles = elements.getChildren("property");
			// 进行遍历
			for (Element e : eles) {
				String proName = e.getAttributeValue("name");
				Object beanObj = this.getBean(e.getAttributeValue("bean"));
				System.out.println(beanObj.toString());
				// 然后调用service的构造方法
				String methodName = "set"
						+ proName.substring(0, 1).toUpperCase()
						+ proName.substring(1);
				System.out.println("methodName:" + methodName);
				// 通过反射获取构造方法
				Method method = obj.getClass().getMethod(methodName,
						beanObj.getClass().getInterfaces()[0]);
				method.invoke(obj, beanObj);
			}
		}
	}

	@Override
	public Object getBean(String name) {
		return beans.get(name);
	}

}





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值