gpt4 book ai didi

spring - 使用 ControllerClassNameHandlerMapping 的 Spring MVC 配置约定?

转载 作者:行者123 更新时间:2023-12-01 09:40:09 24 4
gpt4 key购买 nike

遵循Spring Source 的指示和 Spring in Action 一书,我正在尝试以最小化 xml 配置的方式设置 Spring MVC。但是根据 Spring Source,这是您设置 ControllerClassNameHandlerMap 的方式

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

<bean id="viewShoppingCart" class="x.y.z.ViewShoppingCartController">
<!-- inject dependencies as required... -->
</bean>

这让我觉得完全没用,因为使用处理程序手动设置 bean 实际上更简单,因为它的 XML 数量大致相同。

现在,《Spring in Action》一书听起来好像您只需要该代码块中的第一行即可使用 ControllerClassNameHandlerMapping,这将使其更加有用。但是,我还不能让它工作。

有Spring经验的人可以帮帮我吗?

最佳答案

这里实际上发生了两种不同的事情:

  • URL 和 Controller 之间的映射
  • 将 Controller 定义为 Spring bean

  • 对于 #1,如果您按照之前的方式定义 ControllerClassNameHandlerMapping,则会处理 URL 到 Controller 的映射。例如, http://example.com/context/home -> 家庭 Controller

    对于 #2,您可以像之前那样定义 Controller bean。或者,您可以继续使用 Spring 2.5 风格的 @Controllers 注释和 Autowiring ,这样就不需要 XML bean 定义。与否,选择权在你。

    使用 ControllerClassNameHandlerMapping 避免的是必须将所有潜在的 URL 显式映射到 Controller 。我们已经成功地使用了它。

    您可能想要使用的另一件事是 DefaultRequestToViewNameTranslator:
    <!-- Generates view names based on the request url (e.g. "/home.htm" => "home", "/user/list.htm" => "user/list", etc.) -->
    <bean id="viewNameTranslator" class="org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator"/>

    我们还使用 UrlBasedViewResolver:
    <!-- Maps view names to tiles view definitions files.  E.g., "home" => "home", etc.  -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
    </bean>

    关于spring - 使用 ControllerClassNameHandlerMapping 的 Spring MVC 配置约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/662650/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com