如何在春季显示所有可用路线?

Posted

技术标签:

【中文标题】如何在春季显示所有可用路线?【英文标题】:How to show all available routes in Spring? 【发布时间】:2011-04-10 19:33:27 【问题描述】:

如何显示在基于 Spring 的应用程序中映射的所有路由?在 Rails 中,这是使用 rake 路由完成的。

我使用 spring 的两种映射方法来创建 URL 映射:

@RequestMapping SimpleUrlHandler

我已经使用Unix命令grepcut来获取@RequestMapping的所有映射。我想知道是否有某种方法可以从 Spring 应用程序中获取这些详细信息。

【问题讨论】:

【参考方案1】:

如果您将 log4j.logger.org.springframework.web 的 Log4J 类别设置为 INFODEBUG,您应该会在应用启动时在服务器日志中看到映射列表(例如 catalina.out)。

例如:

INFO: DefaultAnnotationHandlerMapping: Mapped URL path [/about] onto handler [org.bozos.songfight.webapp.spring.controller.RootController@6bc947]
INFO: DefaultAnnotationHandlerMapping: Mapped URL path [/about.*] onto handler [org.bozos.songfight.webapp.spring.controller.RootController@6bc947]
INFO: DefaultAnnotationHandlerMapping: Mapped URL path [/about/] onto handler [org.bozos.songfight.webapp.spring.controller.RootController@6bc947]
...
INFO: SimpleUrlHandlerMapping: Mapped URL path [/login] onto handler [org.springframework.web.servlet.mvc.UrlFilenameViewController@4035acf6]

【讨论】:

在我的情况下,上述属性不起作用,我必须将 logging.level.org.springframework.web 设置为 DEBUG 啊,是的,这就是使用Spring boot时的做法。我的答案是专门针对在没有 Spring Boot 的情况下使用 Spring Framework 以及直接配置 Log4J 而不是通过 Spring Boot。【参考方案2】:

如果您使用的是 Intellij(终极版),那么在构建/运行项目后,您可以在底部工具栏中查看路由 Run -> Endpoints -> Mappings

【讨论】:

值得注意的是,如果在运行 Spring Boot 应用程序时看不到映射选项卡,那么您可能需要执行以下操作: 1- 启用 MVC Spring 插件(如果尚未启用), 2- 将执行器添加到您的依赖项 mvnrepository.com/artifact/org.springframework.boot/… 执行器的 maven 依赖项 有没有办法用命令行打印出路线?

以上是关于如何在春季显示所有可用路线?的主要内容,如果未能解决你的问题,请参考以下文章

如何在春季使用 OIDC 从授权服务器获取所有用户?

Rails 6 路线 - 如何添加自定义“新”路线?

如何在春季禁用将 ZonedDateTime 字段的时区转换为 UTC,仅用于一个字段并将其保留用于所有其他字段?

当目的地不可用时如何停止使用骆驼路线中的消息

如何正确设置路线

laravel 刀片 - 如何隐藏特定路线的 html 元素的显示