-
项目结构
- Student实体类
package model; public class Student { private String name; private int age; private String gender; public Student() { } public Student(String name, int age, String gender) { super(); this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]"; } }
- beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans> <!-- 注册需要被管理的类 --> <bean name="student" class="model.Student"></bean> </beans>
- BeanFactory.java
package container; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; public class BeanFactory { private String configFilename; private Map<String, Object> map = new HashMap<String, Object>(); public BeanFactory(String configFilename) { super(); this.configFilename = configFilename; init(); } public Object getBean(String beanName) { Object obj = map.get(beanName); return obj; } public void init() { SAXReader reader = new SAXReader(); try { Document document = reader.read(new File(configFilename)); Element root = document.getRootElement(); List<Element> elements = root.elements("bean"); for(Element element : elements) { String clazz = element.attributeValue("class"); String name = element.attributeValue("name"); this.map.put(name, Class.forName(clazz).newInstance()); } System.out.println(map); } catch (DocumentException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } } }
Spring IOC源码的超简单实现(遍历xml后,利用反射返回创建对象)
最新推荐文章于 2021-03-07 06:03:11 发布