Java 在SpringMVC中定制DispatcherServlet是一种常见做法吗?

Java 在SpringMVC中定制DispatcherServlet是一种常见做法吗?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我是Spring MVC的新手。但我在使用Struts1.x方面有一定的经验。我想知道在使用Spring MVC时定制DispatcherServlet是否是一种常见做法,就像人们有时在Struts 1.x中定制ActionServlet或RequestProcessor一样 或者让我们把问题扩大一点。经验丰富的SpringMVC程序员定制MVC框架的切入点在哪里 谢谢。你为什么要专攻 任何请求预处理都可以/应该通过实现,其余的则取决于的实现 或者,请参阅adatapost的回答,其中提到了通过

我是Spring MVC的新手。但我在使用Struts1.x方面有一定的经验。我想知道在使用Spring MVC时定制DispatcherServlet是否是一种常见做法,就像人们有时在Struts 1.x中定制ActionServletRequestProcessor一样

或者让我们把问题扩大一点。经验丰富的SpringMVC程序员定制MVC框架的切入点在哪里


谢谢。

你为什么要专攻

任何请求预处理都可以/应该通过实现,其余的则取决于的实现


或者,请参阅adatapost的回答,其中提到了通过web.xml文件配置的。

这肯定是一个很好的做法

小结:您可以自定义Spring的 通过添加上下文,DispatcherServlet 参数。。。。尤其是在 你有很多共同的功能 在一个控制器中


DispatcherServlet
,与大多数SpringAPI一样,非常适合扩展。事实上,如果您发现其中有一部分不支持子类化,请在他们的JIRA上提交一个问题,他们可能会为您解决它(我已经多次这样做)


话虽如此,绝大多数功能都可以通过配置DispatcherServlet来实现,而不是对其进行扩展。

例如,我从未找到扩展DispatcherServlet的理由

下面是我的建议,我认为扩展DispatcherServlet将是一个“好”的解决方案

  • 单独验证,从控制器转换(有几个好的理由)
  • 使控制器成为服务层的委托者
  • 在域/请求对象到达控制器之前完全构建/填充该对象

  • 请你澄清一下你所说的定制是什么意思-你是指专门化(如我所回答的)还是配置(如adatapost所回答的)?实际上我是指两者,因为我需要关于扩展它的所有信息。此外,我同意你的观点。扩展DispatcherServlet并使用过滤器或控制器替换。然而,通过这种方式,SpringMVC无法为插件开发人员提供标准的plig-in接口。在struts中,一些插件是通过扩展“RequestProcessor”来完成的。我对struts插件体系结构不是很熟悉,但我认为SpringMVCAPI是非常简单的。它的名字有点错误,因为它实际上只是MVC模式的控制器部分,让您根据需要定义视图和模型(通常是JSP和POJO)。是的,但它几乎(如果不是全部)满足了所有需求。这是一个很好的框架。我非常喜欢它。哦,是的,SpringMVC很棒——它与Spring集成得很好,只需要满足您的请求,然后您就可以用它做您喜欢的事情了。到目前为止,这是我构建web应用程序的首选方式,前端采用web标准XHTML/CSS和JQuery。我问这个问题是为了更好地理解这个框架,并看看这种方式能起到什么作用。:)你为什么要专攻什么?因为你可能有别人还没有的需求。所以我不明白这些答案怎么会有投票权。如果一个类具有DispatcherServlet所具有的“受保护”方法,那么这肯定意味着开发人员认为可能需要重写它。Grails开发人员已经覆盖了DispatcherServlet,对于他们来说,过滤器还不足以定制某些功能。您可以专门化的可能性总是存在的,但问题是它是否常见,我认为不是,而且通常有更好的方法来实现您所需的功能,尽管是允许的,情况可能并不总是这样,你是对的。我甚至不能说出一件事情,它目前的实现无法实现。谢谢你的建议。如果我觉得有必要,我会提出一个问题。如果你认为这是一个好办法,那就继续实施吧。尽管我一开始就问了这个问题,但我还没有发现必须扩展DispatcherServlet的情况。