- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了实现我们的请求映射版本控制解决方案,我实现了自己的 RequestMappingHandlerMapping
作为它的子类。我覆盖了 registerHandlerMethod()
和 lookupHandlerMethod()
。关键概念是一个请求映射可以出现多次,但各种实现存储在不同的 Java 包中。我的新类根据 servlet 路径的第一个路径元素(即版本号)从正确的包中选择所需的版本。在寻找合适的请求映射处理程序之前删除版本。
这就是我将它编织到 Spring 中的方式:
import javax.inject.Inject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@Configuration
public class VersioningWebMvcConfigurationSupport extends WebMvcConfigurationSupport {
private VersioningRequestMappingHandlerMapping requestMappingHandlerMapping;
@Override
@Bean
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
requestMappingHandlerMapping.setOrder(0);
requestMappingHandlerMapping.setInterceptors(getInterceptors());
return requestMappingHandlerMapping;
}
@Inject
public void setRequestMappingHandlerMapping(VersioningRequestMappingHandlerMapping requestMappingHandlerMapping) {
this.requestMappingHandlerMapping = requestMappingHandlerMapping;
}
}
恕我直言,我的 applicationContext.xml 的重要部分:
<context:annotation-config />
<context:mbean-export />
<context:component-scan base-package="..." />
<mvc:annotation-driven />
如果您想让我在那里寻找其他线路,请告诉我。
我的问题是我的代码运行正确,重复项得到正确处理。然而,原始的 (?) RequestMappingHandlerMapping
仍然被初始化。由于重复的请求映射,那个失败了。
我怎样才能避免这种情况?在我看来,如果没有默认的 RequestMappingHandlerMapping
,我的网络应用程序也能正常运行。
最佳答案
不是很确定,但是标签<mvc:annotation-driven />
可能正在注册 RequestMappingHandlerMapping
在您的网络应用程序中。
Spring MVC 文档提到,如果您使用 MVC 命名空间,RequestMappingHandlerMapping 默认启用:
Spring 3.1 introduced a new set of support classes for @RequestMapping methods called RequestMappingHandlerMapping and RequestMappingHandlerAdapter respectively. They are recommended for use and even required to take advantage of new features in Spring MVC 3.1 and going forward. The new support classes are enabled by default from the MVC namespace and with use of the MVC Java config but must be configured explicitly if using neither.
所以我怀疑你必须摆脱那个 <mvc:annotation-driven />
标记以禁用 RequestMappingHandlerMapping
的默认行为.
关于spring-mvc - 如何避免初始化 Spring 的默认 RequestMappingHandlerMapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974027/
我正在对我使用 mybatis 学到的东西进行回顾(以及给出的练习)。 我想要做的是获取一个带有简单图表的页面,该图表将在图表中获取公司员工列表。 但是当我尝试运行并单击一个链接(这将完成真正的工作)
我正在尝试注册 HandlerInterceptorAdapter例如,无论我做什么,它都不会被执行。 我试过复制 the example from the spring documentation没
我最近将 Spring 4 MVC Web 应用程序从 XML 配置转换为基于 java 的配置。这样做之后,所有 Controller 都被映射两次。我觉得这与组件扫描有关,但我无法弄清楚为什么。如
我有一个自定义 RequestMappingHandlerMapping 类,它将特殊注释解释为其映射标准的一部分。它被实例化为一个 bean: @Configuration @EnableWebMv
我似乎对如何将 RestController 添加到我的应用程序感到困惑。我很接近这里,但是当点击 url http://localhost:8080/rest/username/test 时,我在日
我正在尝试在我的 spring mvc Controller 中 Autowiring org.springframework.web.servlet.mvc.method.annotation.Re
更新:奇怪的是,只有当我用 Gradle 构建 jar 时才会抛出这个错误。 Maven 生成的 jar 运行良好!所以我目前正在探索我的 gradle 构建脚本/spring boot 配置是否以及
为了实现我们的请求映射版本控制解决方案,我实现了自己的 RequestMappingHandlerMapping 作为它的子类。我覆盖了 registerHandlerMethod() 和 looku
我们编写的 Web 应用程序需要双语 URL。我们之前使用过“plain Spring/Spring MVC”,但我们已经开始过渡到 Spring boot。 在我们较旧的 Spring 3.x/4.
我正在使用我想配置 RequestMappingHandlerMapping用于禁用useTrailingSlashMatch 。当我声明另一个RequestMappingHandlerMapping
我已经创建了一个自定义注解来对我的 API 进行版本控制。 运行应用程序时一切正常。 但是,当我尝试使用 MockMvc 测试我的 Controller 时,我编写的自定义 RequestMappin
尝试制作一些 spring 示例程序 - 不断出现错误 - 碰巧我的 Controller 无法处理/hello 请求。这是来自 log4j 的调试信息。 13:50:58,502 {TRAC
我在运行时收到以下错误。 Exception encountered during context initialization - cancelling refresh attempt: org.s
我有自己的 RequestMappingHandlerMapping 并且我正在使用 springfox-swagger-ui。添加自定义映射后,我无法在 http://localhost:8080/
我刚刚创建了我的 Controller ,但是当我尝试启动我的应用程序时,我收到标题中提到的错误。 我花了一些时间摆弄我的 Controller ,但看不到任何重复的映射,因此不完全确定出了什么问题。
我的 Spring Web MVC 项目外部有一个 Controller 加载器。 喜欢:Class myControllerClass = classLoader.loadClass("withfu
我正在将我的一个应用程序从 Spring 工具套件 IDE 移植到纯 Eclipse Java EE IDE。在这个过程中,我正在重命名一些包并更改为基于 Maven。然后所有 Controller
我有一个像这样的 spring MVC 配置类: @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigure
我构建了一个简单的 Spring MVC 应用程序,它可以在我的本地机器上完美运行。然而,将其上传到 Google App Engine 后,我收到了 HTTP 500 错误。 查看日志,我收到此 I
我正在使用 spring java 配置来创建一个网络应用。 当我在 tomcat 上运行时,它说找不到资源/myapp/myapp 在控制台输出中,我注意到以下内容。我不确定这是否会导致任何问题。
我是一名优秀的程序员,十分优秀!