gpt4 book ai didi

java - 如何在 Spring Boot 2 中定义默认处理程序

转载 作者:行者123 更新时间:2023-12-02 12:42:28 26 4
gpt4 key购买 nike

如何定义默认处理程序或 Controller 操作,当没有为给定 URL 找到其他处理程序时将调用该处理程序?

我尝试使用包罗万象的模式 /** (语法是 Kotlin):

@Controller
class DefaultController {

@RequestMapping("/**")
fun default(...) {
...
}
}

但这与 匹配比 Spring 自己的处理程序更高的优先级,例如 spring.mvc.static-path-pattern中配置的静态文件路径不再被提供。我需要我的默认处理程序具有最低优先级。

最佳答案

您必须添加 HandlerMapping 的实现并将其添加到处理程序列表中。您还需要指定处理请求的处理程序的顺序:

@Bean
public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
SimpleUrlHandlerMapping simpleUrlHandlerMapping
= new SimpleUrlHandlerMapping();
Map<String, Object> urlMap = new HashMap<>();
urlMap.put("/**", defaultController());
simpleUrlHandlerMapping.setUrlMap(urlMap);
simpleUrlHandlerMapping.setOrder(1);
return simpleUrlHandlerMapping;
}

这里 defaultController()方法返回 @Controller ,你已经为给定的映射定义了,所以 DefaultController . setOrder方法定义处理程序的优先级(顺序),从 0 开始。当然有些默认 HandlerMapping必须定义为 @Bean也是。有关此类配置的更多信息,您可以找到 here .

编辑@Tobia 的一些想法:

您需要删除 @RequestMapping注释,以便 RequestMappingHandlerMapping 不会拾取 Controller 并实现 AbstractController覆盖 handleRequestInternal()中 Controller 定义的接口(interface).

关于java - 如何在 Spring Boot 2 中定义默认处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54840822/

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