0
点赞
收藏
分享

微信扫一扫

【Java基础】——应用配置文件的反射


前提

    上篇文章 【Java基础】——反射​简单介绍了反射的使用方式,这篇博客主要讲解反射通过配置文件运行的步骤以及实现方式。也是各个框架利用反射最基本demo。
    在上篇博客中获取reflect类的路径使用的reflect.class.getName(),如果当类不清楚,方法不清楚的时候又该怎样使用呢?也就是本篇博客的重点,利用配置文件使用此功能。通过配置文件实现此功能如下


    

将运行的类名和方法名字,以键值对的形式,写到文本中。

然后运行哪个类就读取哪个配置文件即可

实现步骤:

1、准备配置文件,小编用的config.properties,在其中存放键值对className,methodName。
2、IO流读取配置文件
3、将配置文件的键值对存储到集合中,Properties集合保存键值对,即类名和方法名
4、利用反射获取到指定的类的class文件对象
5、从class对象中获取指定的方法
6、运行方法

配置文件

className=org.jia.reflect.reflect

调用类

public class reflect {
public void sayHello(){
System.out.println("Hello World!!!");
}
}

实现方法

public static void main(String[] args) throws Exception {
//IO流读取配置文件
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
//创建集合对象
Properties pro = new Properties();
//调用集合方法load,传递流对象
pro.load(resourceAsStream);
resourceAsStream.close();
//通过键值获取值
String className = pro.getProperty("className");
String methodName = pro.getProperty("methodName");
//反射获取指定类的class文件对象
Class<?> c = Class.forName(className);
Object o = c.newInstance();
//获取指定的方法名

总结

    主要是将配置和反射的使用方式结合起来,从而达到反射真正的动态而且灵活可配置的方式。反射最基础的应用就是动态代理,在之前的博客中小编讲解过代理模式,之后会结合反射讲解JDK动态代理和CGLIB代理。
    如有错误之处还请各位大神指出,小编不胜感激!!!


举报

相关推荐

0 条评论