如何在启动后获取所有端点列表,春季启动
2022-08-31 15:11:55
我有一个用弹簧靴写的休息服务。我想在启动后获取所有终结点。我怎样才能做到这一点?为此,我想在启动后将所有端点保存到数据库(如果它们尚不存在)并使用这些端点进行授权。这些条目将注入到角色中,角色将用于创建令牌。
我有一个用弹簧靴写的休息服务。我想在启动后获取所有终结点。我怎样才能做到这一点?为此,我想在启动后将所有端点保存到数据库(如果它们尚不存在)并使用这些端点进行授权。这些条目将注入到角色中,角色将用于创建令牌。
您可以在应用程序上下文的开头获取 RequestMappingHandlerMapping。
@Component
public 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 */);
}
}
或者,您也可以使用Spring引导执行器(即使您没有使用Spring boot,您也可以使用actutator),它公开另一个端点(映射端点),该端点在json中列出所有端点。您可以点击此终端节点并解析 json 以获取终端节点列表。
需要 3 个步骤来公开所有终结点:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在Spring Boot 2中,执行器禁用了大多数端点,默认情况下唯一可用的2个是:
/health
/info
如果要启用所有终结点,只需设置:
management.endpoints.web.exposure.include=*
有关更多详细信息,请参阅:
https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html
顺便说一句,在Spring Boot 2中,执行器通过将其与应用程序模型合并来简化其安全模型。
有关更多详细信息,请参阅此文章: