LoginSignup
3
2

More than 3 years have passed since last update.

Spring、TERASOLUNA でマッピングされているURLの一覧を確認したい。

Posted at

Spring や TERASOLUNA で Controllerクラス に @RequestMapping を設定してみたものの、いざURLにアクセスすると404エラー・・・
Controllerクラス に設定したURLをSpringが認識しているのかどうか確認したいが、簡単には確認する方法はなさそうでした。
なので、方法を考えました。

SpringでリクエストURLにマッピングされているControllerを選定しているのはHandlerMappingで、HandlerMappingとして利用されているのがRequestMappingHandlerMappingということなのでこれを利用してマッピングしているリクエストURLを取得してみよう。

で、こうなりました。

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

@Controller
public class HelloController {
    private final RequestMappingHandlerMapping handlerMapping;

    public HelloController(RequestMappingHandlerMapping handlerMapping) {
        this.handlerMapping = handlerMapping;
        System.out.println("======= url mapping");
        Map<RequestMappingInfo, HandlerMethod> handlerMethodMap = this.handlerMapping.getHandlerMethods();
        for( Map.Entry<RequestMappingInfo, HandlerMethod> mapItem : handlerMethodMap.entrySet() ) {
            RequestMappingInfo key = mapItem.getKey();
            HandlerMethod value = mapItem.getValue();

            System.out.println("======= " + key.getPatternsCondition() + " :: " + value);
        }
    }
}

Springが読込むとこ(component-scan の指定箇所)に置くとサーバ起動時に リクエストURL とそれに紐付いているクラス、メソッドが出力されます。
表示されない場合は、component-scan の設定が間違っているか、サンプルが間違っているか・・・

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2