关于spring:什么应该调用HandlerInterceptorAdaptor?

What should have HandlerInterceptorAdaptor been called?

在SpringMVC中,可以定义拦截器,它可以在调用特定控制器之前和之后执行工作。例如,这可以用于进行日志记录、身份验证等。

希望编写自定义拦截器的程序员应该实现handlerInterceptor接口。为了帮助完成这个任务,提供了handlerInterceptoradaptor抽象基类,它提供了接口中指定的所有方法的默认实现。因此,如果只想做一些预处理,可以只做extend HandlerInterceptorAdaptor@Override public boolean preHandle(...)两种,而不必担心实现postHandle功能。

我怀疑这个名字。根据我对适配器模式的理解,它适应接口之间的语法阻抗不匹配。

  • 是这样吗?如果是,提供样板文件实现的类应该称为handlerInterceptorDefaultImpl,还是沿着这些行的某个类?

  • 这里发生的事情有不同的命名法/模式吗?

  • 我们需要一个样板类A代码气味,并且可以通过将handlerInterceptor接口重构为两个:handlerPreInterceptor和handlerPostInterceptor来消除这一事实吗?或者这是过度杀戮?


  • 从GOF关于适配器模式的书中:

    适配器为使适配器适应目标接口所做的工作量各不相同。有一系列可能的工作,从简单的接口转换(例如,更改操作名称)到支持完全不同的操作集。适配器的工作量取决于目标接口与适配器的相似程度。

    您所引用的样板文件类称为骨架实现类。这是Joshua Bloch在Java中提到的。从书中说:

    您可以通过提供一个抽象骨架实现类来结合接口和抽象类的优点,以便与您导出的每个重要接口配合使用。接口仍然定义了类型,但是框架实现会把实现它的所有工作都去掉。

    按照惯例,骨架实现称为AbstractInterface,其中Interface是它们实现的接口的名称。例如,collections框架提供了一个框架实现,与每个主集合接口一起使用:abstractcollection、abstractset、abstractlist和AbstractMap。可以说,称之为"骷髅集"、"骷髅集"、"骷髅集"、"骷髅集"和"骷髅集",是有道理的,但抽象约定现在已经牢固确立。