How to show all available routes in Spring?

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.

enter image description here


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 example of logs from spring-webmvc:5.3.17's AbstractHandlerMapping.class

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 spring-webmvc:5.3.17's AbstractHandlerMapping.class logger declaration

This logger gets used in method detectHandlerMethods() of subclass AbstractHandlerMethodMapping spring-webmvc:5.3.17's AbstractHandlerMethodMapping.class

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

Tags:

Spring

Routes