导包
<dependencies>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
代码
public class MySpring {
public Object getBean(String className){
Object obj = null;if(getClassName(className)==null){
throw new RuntimeException("Bean属性值不存在");
}
try {
Class clazz = Class.forName(getClassName(className));
obj = clazz.newInstance();
Field[] fields = clazz.getDeclaredFields();
for(int i = 0;i<fields.length;i++){
String methodName = new StringBuffer("set").append(fields[i].getName().substring(0,1).toUpperCase()).append(fields[i].getName().substring(1)).toString();
Class classes = fields[i].getType();
Method method = clazz.getDeclaredMethod(methodName,classes);
Constructor conn = classes.getConstructor(String.class);
method.invoke(obj,conn.newInstance(getClassName(className,fields[i].getName())));
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
private String getClassName(String ClassName){
HashMap<String,String> map = getKey().get(ClassName);
if(map==null){
return null;
}else{
return map.get(ClassName);
}
}
private String getClassName(String ClassName,String FieldName){
return getKey().get(ClassName).get(FieldName);
}
private static HashMap<String,HashMap<String,String>> getKey() {
HashMap<String,HashMap<String,String>> map= new HashMap<String,HashMap<String,String>>();
try {
SAXReader saxr = new SAXReader();
Document doc = (Document) saxr.read(new File("./src/main/resources/Spring.xml"));
Element root = doc.getRootElement();
List<Element> list = root.elements();
for (Element element : list) {
String className = element.attributeValue("name");
String clazzName = element.attributeValue("class");
List<Element> elements = element.elements();
HashMap<String,String> map1 = new HashMap<String, String>();
map1.put(className,clazzName);
for (Element e:elements
) {
String name = e.attributeValue("name");
String value = e.attributeValue("value");
map1.put(name, value);
}
map.put(className,map1);
}
} catch (Exception e) {
}
return map;
}
}
配置文件Spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<Spring>
<bean name="person1" class="day01.Person">
<Field name="name" value="张三"/>
<Field name="age" value="16"/>
<Field name="sex" value="男"/>
</bean>
<bean name="person2" class="day01.Person">
<Field name="name" value="李四"/>
<Field name="age" value="17"/>
<Field name="sex" value="女"/>
</bean>
<bean name="person3" class="day01.Person">
<Field name="name" value="王五"/>
<Field name="age" value="18"/>
<Field name="sex" value="男"/>
</bean>
</Spring>