xml+dom4j+反射--实现接口解耦(框架注解原理)

xml+dom4j+反射–实现接口解耦(模拟框架创建实例原理)

public class BeanFactory {
          
   
    public static Object newInstance(String id) throws Exception {
          
   
        // 创建xml解析器
        SAXReader sax = new SAXReader();
        // 读取注册文件
        Document document = sax.read("exercise\src\xiaobai\beans.xml");
        // 读取beans.xml文件中id是所传入的类名的bean元素
        Element element = (Element) document.selectSingleNode("//bean[@id=" + id + "]");
        // 获取bean元素的属性值class
        String className = element.attributeValue("class");
        // 根据class的属性值,使用反射技术,获取class文件对象
        Class clazz = Class.forName(className);
        // 使用class文件对象中的方法newInstance实例化对象
        Object obj = clazz.newInstance();
        // 返回对象
        return obj;
    }
}
public class Student {
          
   
    public void study() {
          
   
        System.out.println("学生学习");
    }
}

public class Teacher {
          
   
    public void teach() {
          
   
        System.out.println("教师教学");
    }
}
<?xml version="1.0" encoding="UTF-8" ?>
<beans>
    <bean id="student" class="xiaobai.Student"/>
    <bean id="teacher" class="xiaobai.Teacher"/>
</beans>
经验分享 程序员 微信小程序 职场和发展