Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
SpringBoot 2.6 버전 이상에서 Swagger 사용하기 위해 Springfox 라이브러리를 추가할 경우 에러가 발생한다.
Springfox는 Spring MVC가 ant_apth_matcher를 기본 값으로 하여 경로를 찾는데, Spring Boot 2.6 버전 이후에는 spring.mvc.pathmatch.matching-strategy의 기본 값이 path_pattern_parser로 변경되어 발생하는 에러이다.
이는 즉, Swagger 라이브러리에서만 발생하는 것이 아닌 Spring Boot 2.6 이상의 환경에서 spring.mvc.pathmatch.matching-strategy의 기본 값을 ant_apth_matcher으로 사용하는 라이브러리를 사용하고자 할 시 발생하는 에러라 할 수 있다.
위에서 서술한 대로 Spring boot 2.6 이후 버전에서 "spring.mvc.pathmatch.matching-strategy"의 기본 값은 "path_pattern_parser"으로 변경되었는데, 이를 변경 전 값인"ant_apth_matcher"으로 변경해 준다.
Solution: .properties 파일인지 .yml 파일인지에 따라 추가하는 값이 다르니 application의 확장자를 확인하고 다음의 값을 추가하자!
[application.properties 파일을 사용하는 경우 다음 내용을 추가]
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
[application.yml 파일을 사용하는 경우 다음 내용을 추가]
mvc:
pathmatch:
matching-strategy: ant_path_matcher
두 번째 해결 방법은 비추천하는 방식이다. 문제가 발생하는 Sprin Boot의 버전을 2.5.x 이하로 다운그레이드 한다.
Springfox는 Springdoc보다 일찍이 개발되어 더 많이 사용되어왔지만, 현재 작성 날짜 기준으로 마지막 업데이트 날짜인 2020년 7월을 마지막으로 업데이트가 없다. Springdoc는 Springfox가 업데이트를 중단한 2018년 ~ 2020년 사이인 2019년에 나와 지속적으로 업데이트되고 있다. 또한 후발주자여서 그런지 Springfox 보다 좀 더 쉽게 사용할 수 있도록 만든 느낌이고 WebFlux를 통한 비동기 방식의 개발을 지원한다. 큰 장점은 지속적인 업데이트가 된다는 게 아닐까? 이것만으로도 Springdoc를 써야 할 이유는 충분하다!
나도 지속적인 업데이트를 해야 할 것인데, 현업이 바쁜 관계로 간간한 업데이트 중이다.