1. 程式人生 > >Spring中不用注入如何正確呼叫service方法

Spring中不用注入如何正確呼叫service方法

spring問題總結

問題描述:

某種業務場景用到Java反射去確定呼叫哪個業務層
與呼叫哪個方法。但是利用傳統的反射機制會
脫離spring容器,dao層並沒有例項化,dao操作完全
執行不了
利用先獲取spring容器,再從spring中獲取bean的例項為正解:

程式碼:

//獲取當前上下文環境,spring容器
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); 
//獲取類例項
Class<?>  cls = wac.getBean(className).getClass();
//獲取執行方法
Method m = cls.getDeclaredMethod(functionName,String.class); //反射呼叫方法,methodParam:方法引數 amount = (BigDecimal) m.invoke(wac.getBean(className),methodParam);