1. 程式人生 > >在練習 spring aop遇到“java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut myM

在練習 spring aop遇到“java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut myM

       遇到這個問題的時候是在, 使用 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();
		}
	}