018-面向接口编程的BeanFactory模板代码
1 BeanFactory工具类
package www.test.utils; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; @SuppressWarnings("all") public class BeanFactory { public static Object getBean(String id){ //生成对象--根据清单生产--配置文件--将每一个bean对象的生产细节配置到配置文件中 //使用dom4j的xml解析技术 导入两个jar包 // dom4j-1.6.1.jar 和 jaxen-1.1-beta-6.jar try { // 1 创建解析器 SAXReader reader = new SAXReader(); // 2 解析文档--bean.xml 在src下面 String path = BeanFactory.class.getClassLoader().getResource("bean.xml").getPath(); //读取 Document doc = reader.read(path); // 3 获得元素--参数是xpath规则 Element element = (Element) doc.selectSingleNode("//bean[@id='"+id+"']"); //<bean id="adminService" class="www.test.service.impl.AdminServiceImpl"></bean> String className = element.attributeValue("class"); //www.test.service.impl.AdminServiceImpl //使用反射创建对象 Class clazz = Class.forName(className); Object object = clazz.getDeclaredConstructor().newInstance(); return object; } catch (Exception e) { e.printStackTrace(); } return null; } }
2 bean.xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans> <!-- 配置CustomerServiceImpl的清单 --> <bean id="customerService" class="www.test.service.impl.CustomerServiceImpl"></bean> <!-- 配置CustomerDaoImpl的清单 --> <bean id="customerDao" class="www.test.dao.impl.CustomerDaoImpl"></bean> </beans>