LoginSignup
1
0

More than 1 year has passed since last update.

SpringFox導入時のNullPointerException回避

Posted at

個人的にAPI自動生成を試してみたく、SpringFoxを導入してみました。
その際にちょっとだけ詰まったので備忘。

前提

この記事を参考にSpringFox導入しました。
ありがとうございます!

問題のエラー

Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.toString()" because the return value of "springfox.documentation.spi.service.contexts.Orderings.patternsCondition(springfox.documentation.RequestHandler)" is null
    at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:112) ~[springfox-spi-2.9.2.jar:null]
    at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:109) ~[springfox-spi-2.9.2.jar:null]
    at com.google.common.collect.ComparatorOrdering.compare(ComparatorOrdering.java:37) ~[guava-20.0.jar:na]
    at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355) ~[na:na]

対処法

application.ymlに下記設定を追加しましょう。
エンドポイント(URL)のパターンマッチングに使われてるような気がします(中身はよくみてない)

application.yml
spting:
  mvc:
    pathmatch:
      matching-strategy: ant-path-matcher
Config.java
    @Bean
    public Docket swaggerPlugin() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any()) 
                .paths(paths())  //ここのパスマッチングで使われてそう
                .build()
                .apiInfo(apiInfo());
    }

    private Predicate<String> paths() {
        // ドキュメント生成の対象とするAPIのURLを指定
        // この場合、「/user」で始まるAPIがドキュメント生成対象となる
        return Predicates.or(Predicates.containsPattern("/user"));
    }
1
0
1

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
1
0