如何显示Spring中所有可用的路线?

Spr*_*key 13 spring routes

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

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

  • @RequestMapping
  • SimpleUrlHandler

我使用了Unix命令grepcut获取了所有的映射@RequestMapping.我想知道是否有一些方法可以从Spring应用程序中获取这些细节.

sdo*_*ass 12

如果您将Log4J类别设置为log4j.logger.org.springframework.web,INFO或者DEBUG您应该在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]
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,上述属性不起作用,我必须将“logging.level.org.springframework.web”设置为“DEBUG” (2认同)

Sid*_*hou 8

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

在此处输入图片说明

  • 值得注意的是,如果您在运行 Spring Boot 应用程序时看不到映射选项卡,那么您可能需要执行以下操作:1-启用 MVC Spring 插件(如果尚未启用),2-将执行器添加到您的应用程序中依赖关系 (3认同)

Win*_*usT 5

解决方案

这可以通过 spring-boot-starter-web:2.6.5 来完成,它使用 spring-webmvc:5.3.17。
将此配置添加到您的 application.yml (或类似的):

logging:
  level:
    _org.springframework.web.servlet.HandlerMapping.Mappings: debug
Run Code Online (Sandbox Code Playgroud)

记录器名称中的下划线“_”很重要。
此属性将在应用程序启动期间生成如下所示的日志 spring-webmvc:5.3.17 的 AbstractHandlerMapping.class 的日志示例

怎么运行的

该属性引用 spring-webmvc:5.3.17 的 org.springframework.web.servlet.handler。AbstractHandlerMapping为映射创建一个隐藏的记录器 spring-webmvc:5.3.17 的 AbstractHandlerMapping.class 记录器声明

该记录器在AbstractHandlerMethodMapping子类的方法detectorHandlerMethods ()中使用 spring-webmvc:5.3.17 的 AbstractHandlerMethodMapping.class

看起来这项技术最早可以追溯到 spring-webmvc 5.3.5(2021 年 3 月):
Github Spring Framework Release 5.3.5

以下是包含更改的提交:
Github Spring Framework commit withchanges forlogging paths