bean.xml
<beans>
<bean id="ProductDao" class="com.lv.daoimp.ProductDaoimp"/>
<bean id="UserDao" class="com.lv.daoimp.UserDaoimp"/>
<bean id="CategoryDao" class="com.lv.daoimp.CategoryDaoimp"/>
<bean id="OrderDao" class="com.lv.daoimp.OrderDaoimp"/>
<bean id="ProductService" class="com.lv.Servlet.Imp.ProductServiceimp"/>
<bean id="UserService" class="com.lv.Servlet.Imp.UserServiceImp"/>
<bean id="CategoryService" class="com.lv.Servlet.Imp.CategoryServiceImp"/>
<bean id="OrderService" class="com.lv.Servlet.Imp.OrderServiceimp"/>
</beans>
/**
* 获取javabean的工厂
* @author Administrator
*
*/
public class BeanFactory {
public static Object getBean(String id){
try {
//1.获取document对象
Document doc=new SAXReader().read(BeanFactory.class.getClassLoader().getResourceAsStream("beans.xml"));
//2.调用api selectSingleNode(表达式)
Element beanEle=(Element) doc.selectSingleNode("//bean[@id='"+id+"']");
//3.获取元素的class属性
String classValue = beanEle.attributeValue("class");
//4.通过反射返回实现类的对象
Object newInstance = Class.forName(classValue).newInstance();
return newInstance;
} catch (Exception e) {
e.printStackTrace();
System.out.println("获取bean失败");
}
return null;
}
public static void main(String[] args) throws Exception {
System.out.println(getBean("ProductDao1"));
}
}
使用:
ProductDao user=(ProductDao) BeanFactory.getBean("ProductDao");