此种方式在调用方法后,在所调用的方法里如果有spring 注解 则注解会失效
try {
//参数
String result="";
//通过完整类名反射加载类
Class<?> c = Class.forName("com.包.类");
//调用法法 String.class 是参数类型 多惨的就继续拼就行 如 new Class[]{String.class,String.class}
Method m = c.getMethod("方法名", new Class[]{String.class});
//创建实例
Object obj = c.getConstructor().newInstance();
//传参
m.invoke(obj,result);
}catch (Exception e) {
System.out.println("----------反射失败------");
e.printStackTrace();
}
优化结果如下
首先新建一个SpringContextUtil 类
@Component
public class SpringContextUtil implements ApplicationContextAware {
// Spring应用上下文环境
private static ApplicationContext applicationContext;
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
*
* @param applicationContext
*/
public void setApplicationContext(ApplicationContext applicationContext) {
SpringContextUtil.applicationContext