最近使用反射獲取對(duì)象酵幕,并調(diào)用方法時(shí),無法獲取到spring中自動(dòng)注入的對(duì)象缓艳。
Class<?> cls = Class.forName(className);
Object obj = cls.newInstance();
Method method = cls.getDeclaredMethod(methodName, Integer.class);
method 為Service里的方法校摩,Service中注入了Dao層對(duì)象,反射調(diào)用此方法是阶淘,沒有正確獲取注入對(duì)象衙吩,即spring實(shí)例沒有生效。故調(diào)整思路溪窒,用Spring中g(shù)etBean的方式獲取實(shí)例坤塞。
//獲取當(dāng)前上下文環(huán)境,spring容器
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
//獲取類實(shí)例
Class<?> cls = wac.getBean(className).getClass();
//獲取執(zhí)行方法
Method m = cls.getDeclaredMethod(methodName,Integer.class);
正解澈蚌。