Filter:
遵从J2EE规范,通过Request和Response获取请求体和返回体信息。
主要方法有init()、destroy()和doFilter()。主要代码逻辑都写在doFilter()里。
不能获取到处理URL请求的方法的信息。
Interceptor:
是Spring框架提供支持的。相比于Filter,它能获取处理URL请求的方法信息。如果被Interceptor拦截的Controller方法抛出了未被捕获处理的异常,那么异常信息会被BasicExceptionController所处理(SpringBoot),BasicExceptionController也会被Interceptor拦截。
Interceptor主要方法有:preHandle(){方法执行之前调用}、postHandle(){未抛出异常、方法执行之后调用}和afterCompletion(){无论是否抛出异常、方法执行之后调用}
Aspect:切面(也叫切片)。相比较于Interceptor,可以获取到方法的参数信息。