在練習 spring aop遇到“java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut myM
阿新 • • 發佈:2018-12-27
遇到這個問題的時候是在, 使用 ssh 做spring aop 日誌功能的時候遇到.
轉 原文地址
在網上找了很多答案,都不知道再說什麼,後來找到一個 跟我場景一樣的,就是 在action中使用的baseAction
在其中獲取 執行時類的時候 報的錯.
解決方法
加一個判斷 替代以前直接獲取的,
if (getClass().getGenericSuperclass() instanceof ParameterizedType) { this.clz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()) .getActualTypeArguments()[0]; } else { this.clz = (Class<T>) ((ParameterizedType) getClass().getSuperclass().getGenericSuperclass()) .getActualTypeArguments()[0]; }
public BaseAction() { // TODO Auto-generated constructor stub /* //獲取 泛型 ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass(); //獲取此類 this.clz = (Class)type.getActualTypeArguments()[0];*/ if (getClass().getGenericSuperclass() instanceof ParameterizedType) { this.clz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()) .getActualTypeArguments()[0]; } else { this.clz = (Class<T>) ((ParameterizedType) getClass().getSuperclass().getGenericSuperclass()) .getActualTypeArguments()[0]; } try { //為此類建立物件並賦值給 泛型t this.t = (T)this.clz.newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } }