正在学习中,遇到这个问题,service拦截器使用Enhancer.enhance()方法就会报错,使用注解可以正常运行,service拦截器也可以正常
//使用Enhancer.enhance()方法就会报错, package com.testjfinal.service; import com.jfinal.aop.Before; import com.jfinal.aop.Enhancer; import com.testjfinal.Interceptor.ServiceInteceptor; public class BaseService { public static final BaseService me= Enhancer.enhance(BaseService.class,ServiceInteceptor.class); public boolean doSomthing(){ //处理业务逻辑 System.out.println("调用了BaseService doSomthing"); return true; } } 报错信息: Error:(14, 49) java: 对于enhance(java.lang.Class<com.testjfinal.service.BaseService>,java.lang.Class<com.testjfinal.Interceptor.ServiceInteceptor>), 找不到合适的方法 方法 com.jfinal.aop.Enhancer.<T>enhance(java.lang.Class<T>)不适用 (无法推断类型变量 T (实际参数列表和形式参数列表长度不同)) 方法 com.jfinal.aop.Enhancer.<T>enhance(java.lang.Class<T>,com.jfinal.aop.Interceptor...)不适用 (无法推断类型变量 T (varargs 不匹配; java.lang.Class<com.testjfinal.Interceptor.ServiceInteceptor>无法转换为com.jfinal.aop.Interceptor)) //使用注解可以正常运行,service拦截器也可以正常 package com.testjfinal.service; import com.jfinal.aop.Before; import com.jfinal.aop.Enhancer; import com.testjfinal.Interceptor.ServiceInteceptor; @Before(ServiceInteceptor.class) public class BaseService { public static final BaseService me= Enhancer.enhance(BaseService.class) public boolean doSomthing(){ //处理业务逻辑 System.out.println("调用了BaseService doSomthing"); return true; } } //附 ServiceInteceptor 类 package com.testjfinal.Interceptor; import com.jfinal.aop.Interceptor; import com.jfinal.aop.Invocation; public class ServiceInteceptor implements Interceptor { @Override public void intercept(Invocation invocation) { System.out.println("调用Service级别拦截器-ServiceInteceptor:"+invocation.isActionInvocation()); invocation.invoke(); } }
项目:JFinal