gpt4 book ai didi

java - 如何确定给定网址的 Controller ( Spring )

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:36:39 24 4
gpt4 key购买 nike

使用 spring DefaultAnnotationHandlerMapping 我如何查找最终会处理给定 url 的 Controller 。

我目前有这个,但感觉应该有比迭代 100 多个请求映射更简洁的方法:

public static Object getControllerForAction(String actionURL) {
ApplicationContext context = getApplicationContext();
AnnotationHandlerMapping mapping = (AnnotationHandlerMapping) context.getBean("annotationMapper");
PathMatcher pathMatcher = mapping.getPathMatcher();
for (Object key: mapping.getHandlerMap().keySet()) {
if (pathMatcher.match((String) key, actionURL)){
return mapping.getHandlerMap().get(key);
}
}
return null;
}

最佳答案

出于这个问题的目的,DefaultAnnotationHandlerMapping 及其父类(super class)中所有有趣的方法都受到保护,因此对外部代码不可见。但是,编写 DefaultAnnotationHandlerMapping 的自定义子类覆盖这些方法并使它们成为public 将是微不足道的。

由于您需要能够提供路径而不是请求对象,因此我建议 AbstractUrlHandlerMappinglookupHandler 是一个不错的选择。它仍然需要您为其提供一个请求对象和路径,但该请求对象仅用于传递给 validateHandler() 方法,该方法什么都不做,因此您可能在那里提供一个空值。

关于java - 如何确定给定网址的 Controller ( Spring ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1195086/

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