首先在src/下创建applicationContext.xml
<?xml version="1.0" encoding="UTF-8" ?>
<beans>
<bean id="IUser" class="cn.edu.guet.Dao.impl.UserImpl"/>
</beans>
创建工厂
public class BeanFactory {
public static Object getBean(Class obj){
SAXReader reader = new SAXReader();
try {
InputStream in = Class.forName("cn.edu.guet.util.BeanFactory").getResourceAsStream("/applicationContext.xml");
Document document = reader.read(in);
Element ele = (Element) document.selectObject("//bean[@id=\""+obj.getSimpleName()+"\"]");
return Class.forName(ele.attributeValue("class")).newInstance();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
注:xml文件一定要放在src/下,这里将一个类传进来可以避免名字打错的问题,xml的id要和接口名相同,使用抽象工厂模式可以增强项目的灵活性,可扩展性