How to Get All Endpoints List After Startup, Spring Boot
You can get RequestMappingHandlerMapping at the start of the application context.
@Componentpublic class EndpointsListener implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent event) { ApplicationContext applicationContext = event.getApplicationContext(); applicationContext.getBean(RequestMappingHandlerMapping.class).getHandlerMethods() .forEach(/*Write your code here */); }}
Alternately you can also Spring boot actuator(You can also use actutator even though you are not using Spring boot) which expose another endpoint(mappings endpoint) which lists all endpoints in json. You can hit this endpoint and parse the json to get the list of endpoints.
You need 3 steps to exposure all endpoints:
- enable Spring Boot Actuator
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>
- enable endpoints
In Spring Boot 2, Actuator comes with most endpoints disabled, the only 2 available by default are :
/health/info
If you want to enable all of the endpoints, just set:
management.endpoints.web.exposure.include=*
For more details, refer to:
https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html
- go!
btw, In Spring Boot 2, Actuator simplifies its security model by merging it with the application one.
For more details, refer to this article:
As an addition to the above comments, since Spring 4.2 you may use the @EventListener
annotation like this:
@Componentpublic class EndpointsListener { private static final Logger LOGGER = LoggerFactory.getLogger(EndpointsListener.class); @EventListener public void handleContextRefresh(ContextRefreshedEvent event) { ApplicationContext applicationContext = event.getApplicationContext(); applicationContext.getBean(RequestMappingHandlerMapping.class) .getHandlerMethods().forEach((key, value) -> LOGGER.info("{} {}", key, value)); }}
If you want to find out more about how to use the Spring Events and to create custom events, please check out this article: Spring Events