スプリングブーツで書かれた休憩サービスがあります。起動後にすべてのエンドポイントを取得したい。どうすればそれを達成できますか?この目的のために、起動後にすべてのエンドポイントをdbに保存し(まだ存在していない場合)、これらを許可に使用します。これらのエントリはロールに挿入され、ロールはトークンの作成に使用されます。
RequestMappingHandlerMappingは、アプリケーションコンテキストの開始時に取得できます。
public class EndpointsListener implements ApplicationListener {
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ContextRefreshedEvent) {
ApplicationContext applicationContext = ((ContextRefreshedEvent) event).getApplicationContext();
applicationContext.getBean(RequestMappingHandlerMapping.class).getHandlerMethods().forEach(/*Write your code here */);
}
}
}
あるいは、jsonのすべてのエンドポイントをリストする別のエンドポイント(マッピングエンドポイント)を公開するSpringブートアクチュエーター(Springブートを使用していない場合でもアクチュエーターを使用することもできます)。このエンドポイントをヒットし、jsonを解析してエンドポイントのリストを取得できます。