service拦截器使用Enhancer.enhance()方法报错,使用@Before正常

正在学习中,遇到这个问题,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();
    }
}


评论区

热门反馈

扫码入社