开发者

How to show all available routes in Spring?

How to show all the routes mapped in a spring based application? In Rails this is done using rake routes.

开发者_如何学C

I use two mapping methods of spring to create the URL-mappings:

  • @RequestMapping
  • SimpleUrlHandler

I have used the Unix command grep and cut to get all the mappings of @RequestMapping. I wonder if there is some way I can get these details from the Spring application.


If you are using Intellij (ultimate edition), then after you build/run the project, you can view the routes in the bottom toolbar Run -> Endpoints -> Mappings.

How to show all available routes in Spring?


If you set the Log4J category for log4j.logger.org.springframework.web to INFO or DEBUG you should see the list of mappings in your server's log (e.g. catalina.out) when your app starts up.

For example:

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]


Solution

This can be done with spring-boot-starter-web:2.6.5 which makes use of spring-webmvc:5.3.17.
Add this config to your application.yml (or similar):

logging:
  level:
    _org.springframework.web.servlet.HandlerMapping.Mappings: debug

The underscore '_' in the logger name is important.
This property will generate logs during application boot that look like this

How to show all available routes in Spring?

How it works

The property references spring-webmvc:5.3.17's org.springframework.web.servlet.handler.AbstractHandlerMapping which creates a hidden logger for mappings

How to show all available routes in Spring?

This logger gets used in method detectHandlerMethods() of subclass AbstractHandlerMethodMapping

How to show all available routes in Spring?

It looks like this technique goes back as early as spring-webmvc 5.3.5 (march 2021):
Github Spring Framework Release 5.3.5

Here's the commit containing the changes:
Github Spring Framework commit with changes for logging routes

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜