框架学习之路一

学习工作当中用到了那么多的框架,难免会想搞清楚这些框架的底层到底是怎样实现的,借此机会从简单的写起,尝试着去实现一个框架

一,通过解析xml,获取其中的字段,用反射技术调用类中的方法

技术:dom4j,java反射

1,定义一个接口

package com.epro.framework;

public interface Ihello {
public void sayHello();
}

2,实现类

package com.epro.framework;

public class HelloJava implements Ihello{

@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("hello Java!!!!!!");
}

}

------------------------------------------------------------------------

package com.epro.framework;

public class HelloWorld implements Ihello{

@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("hello World!!!!!!!!!1");
}

}

3,配置文件mybean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="helloWorld" class="com.epro.framework.HelloWorld"></bean>
<bean id="helloJava" class="com.epro.framework.HelloJava"></bean>
</beans>

4,写一个主方法调用

package com.epro.framework;

import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class TestFrameWork {
public static void main(String[] args) {
SAXReader saxreader=new SAXReader();
try {
Document document=saxreader.read(new File("src/mybean.xml"));
Element rootElement=document.getRootElement();
Iterator iter=rootElement.elementIterator();

while(iter.hasNext()){
Element element=(Element) iter.next();
String myClassName=element.attributeValue("class");
Class clazz=Class.forName(myClassName);
//这个方法写在接口里,实现类实现这个接口就一定能调用到这个方法
Method method=clazz.getMethod("sayHello", null);
Constructor contructor=clazz.getConstructor();
Object obj=contructor.newInstance();
method.invoke(obj, null);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

这样只要新增实现类实现Ihello接口,重写其中的方法,并配置到mybean.xml,不用修改主方法就能自动调用到。

猜你喜欢

转载自www.cnblogs.com/xixiyunan/p/9955584.html