package com.sun.spring;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
public class BeanFactory {
Map<String, Object> map = new HashMap<String, Object>();
public void classPathXmlApplicationContext(String str) throws JDOMException, IOException{
SAXBuilder sb=new SAXBuilder();
Document doc=sb.build(this.getClass().getClassLoader().getResourceAsStream(str)); //构造文档对象
Element root=doc.getRootElement(); //获取根元素
List<Element> list=XPath.selectNodes(root, "/beans/bean");//取名字为bean的所有元素
for(int i=0;i<list.size();i++){
Element bean = list.get(i);
String id = bean.getAttributeValue("id");//这个地方的参数一定不要写错,否则id值就会为null,让我好找了一段时间
String clazz = bean.getAttributeValue("class");
Object o = null;
try {
o = Class.forName(clazz).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
map.put(id, o);
}
}
public Object getBean(String key){
return map.get(key);
}
}
----------
package com.sun.spring;
import static org.junit.Assert.*;
import java.io.IOException;
import org.jdom.JDOMException;
import org.junit.Test;
public class BeanFactoryTest {
@Test
public void testClassPathXmlApplicationContext() throws JDOMException, IOException {
BeanFactory f = new BeanFactory();
f.classPathXmlApplicationContext("com/sun/spring/applicationContext.xml");
Car c=(Car) (f.getBean("c"));
c.run();
}
@Test
public void testGetBean() {
fail("Not yet implemented");
}
}
----------
package com.sun.spring;
public class Car {
public void run(){
System.out.println("汽车.........");
}
}
----------
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这个bens里不要写命名空间,schemaLocaltion等否则无法正确读取xml文件。具体原因不详 -->
<beans>
<bean id="c" class="com.sun.spring.Car" ></bean>
</beans>
Factory
最新推荐文章于 2024-07-29 07:46:12 发布