1、加载反射文件
public class ReflectClassLoader {
protected static final Logger LOG = LoggerFactory.getLogger(ReflectClassLoader.class);
private static ReflectClassLoader intance;
public Properties props=null;
private DecodeReflectClassLoader(){
try {
InputStream is = new FileInputStream("refconfig.properties");
props= new Properties();
props.load(is);
} catch (IOException e) {
LOG.info("[ReflectClassLoader] exception", e)
}
}
public static ReflectClassLoader getIntance(){
if(intance==null){
intance=new ReflectClassLoader();
}
return intance;
}
}
反射文件:refconfig.properties
# V3
V3DBootNotificationRequest=.......
V3DStatusNotificationRequest=......
2、反射创建实例
private Object instanceByName(String propName, Class classObj) {
Object obj = null;
String classString = ReflectClassLoader.getIntance().props.getProperty(propName);
if (StringUtils.isNoneBlank(classString)) {
try {
obj = Class.forName(classString).newInstance();
} catch (ClassNotFoundException e) {
LOG.info("[ClassNotFoundException] exception", e);
} catch (InstantiationException e) {
LOG.info("[InstantiationException] exception", e);
} catch (IllegalAccessException e) {
LOG.info("[IllegalAccessException] exception", e);
}
}
LOG.debug("classString: {}, obj: {}", classString, obj);
return obj;
}