可以是可以不过有点限制,做一个切面就可以
@RestController
public class TestController extends BaseController{
@GetMapping("/get")
public String gettest(HttpServletRequest request, HttpServletResponse response,String id){
return "测试是否调用"+id;
}
}
public class BaseController {
private HttpServletRequest request;
private HttpServletResponse response;
public void init(HttpServletRequest request, HttpServletResponse response){
this.request=request;
this.response=response;
System.out.println("basecontroller 被调用");
System.out.println(request.getMethod());
}
}
@Aspect
@Component
public class aspect {
@Pointcut("execution(public * com.controller.*.*(..))")
protected void allPublicMethodCall() {
// no need to implement this pointcut
}
@Around("allPublicMethodCall()")
public Object logDefaultApiCallInfo(ProceedingJoinPoint pjp) throws Throwable {
Object ControllerCalled = pjp.getTarget();
if(ControllerCalled instanceof BaseController){
Method init=BaseController.class.getDeclaredMethod("init",new Class[]{HttpServletRequest.class, HttpServletResponse.class});
Object[] ags=new Object[]{pjp.getArgs()[0],pjp.getArgs()[1]};
init.invoke(ControllerCalled,ags);
}
Object returnValue = pjp.proceed();
return returnValue;
}
}