在 Spring MVC 中,可以定义拦截器,这些拦截器可以在调用特定控制器之前和之后执行工作。例如,这可以用于进行日志记录、身份验证等。
希望编写自定义拦截器的程序员应该实现HandlerInterceptor接口。为了帮助完成这项任务,提供了HandlerInterceptorAdaptor抽象基类,它提供接口中指定的所有方法的默认实现。所以,如果只是想做一些预处理,可以extend HandlerInterceptorAdaptor
和@Override public boolean preHandle(...)
,而不用担心实现postHandle
功能。
我的疑问与名称有关。根据我对适配器模式的理解,它适应接口之间的句法阻抗不匹配。
是这样吗?如果是,那么提供样板实现的类是否应该称为 HandlerInterceptorDefaultImpl,或者类似的名称?
这里发生的事情是否有不同的命名法/模式?
我们需要样板类的事实是否是代码异味,并且可以通过将 HandlerInterceptor 接口重构为两个:HandlerPreInterceptor 和 HandlerPostInterceptor 来消除?还是那是矫枉过正?