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>

 

posted @ 2018-03-01 18:32  Jepson6669  阅读(172)  评论(0编辑  收藏  举报