ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • springboot v3.x에서 swagger v3 설정법
    극락코딩 2023. 11. 27. 18:17

    SpringBoot v3.x로 올리면서, swagger3 적용 방식이 조금 달라졌다. 1주간 삽질한 것을 기록하자.

     

    springboot v3.x로 올려야 되는 상황이 발생했다. 지금까지 2.7.x만 사용하다가...3.x로 올리려니 겁이 났다.

    어디서 에러가 터질까.. 어디서 장애가 날까.. 그중에서 가장 나를 아프게 한 건 Swagger Setup이다.

     

     

    일단, springboot v2.x에서 사용했던 셋업은 다음과 같이 진행했다.

    
    object DependecyVersion {
    	const val SPRINGDOC_VERSION = "1.7.0"
    	const val JAVADOC_SCRIBE_VERSION = "0.15.0"
    }
    
    dependecy {
    	implementation("org.springdoc:springdoc-openapi-webflux-ui:${DependencyVersion.SPRINGDOC_VERSION}")
    	implementation("org.springdoc:springdoc-openapi-kotlin:${DependencyVersion.SPRINGDOC_VERSION}")
    	implementation("org.springdoc:springdoc-openapi-javadoc:${DependencyVersion.SPRINGDOC_VERSION}")
    	kapt("com.github.therapi:therapi-runtime-javadoc-scribe:${DependencyVersion.JAVADOC_SCRIBE_VERSION}")
    }

     

    springdoc version이 1.7.0인데, 1.x 버전대에서는 boot2.x 버전까지만 지원한다.

     

    springboot3에서는 springdoc 2.2.x 버전대를 사용해야 한다.

     

    요기 링크를 통해 확인할 수 있다.

    https://springdoc.org/

     

     

    OpenAPI 3 Library for spring-boot

    Library for OpenAPI 3 with spring boot projects. Is based on swagger-ui, to display the OpenAPI description.Generates automatically the OpenAPI file.

    springdoc.org

     

     

     

    결론부터 말하면, 다음과 같이 springdoc을 설정하면, 기존의 swagger 기능을 그대로 사용 가능하다.

    object DependencyVersion {
        const val SPRINGDOC_VERSION = "2.2.0"
        const val JAVADOC_SCRIBE_VERSION = "0.15.0"
    }
    
    dependecy {
        implementation("org.springdoc:springdoc-openapi-starter-webflux-ui:${DependencyVersion.SPRINGDOC_VERSION}")
        implementation("org.springdoc:springdoc-openapi-starter-common:${DependencyVersion.SPRINGDOC_VERSION}")
        implementation("com.github.therapi:therapi-runtime-javadoc-scribe:${DependencyVersion.JAVADOC_SCRIBE_VERSION}")
        kapt("com.github.therapi:therapi-runtime-javadoc-scribe:${DependencyVersion.JAVADOC_SCRIBE_VERSION}")
    }

     

    기존의 org.springdoc:springdoc-openapi-kotlinorg.springdoc:springdoc-openapi-javadoc이 모두

    org.spring.doc:springdoc-openapi-starter-common으로 종속되게 되었다.

     

     

     

    그래서, 예전에 따로 받아서 관리하던 라이브러리를 하나로 퉁치면 사용할 수 있다.

     

     

     

    그런데, 여기서 좀 특이한 케이스가 com.github.therapi:therapi-runtime-javadoc-scribe 라이브러리가 이전에는 runtime 주입으로만 사용 가능했었는데, 이제는 implement 해야지만 사용가능하다.. 이부분은 확인이 더 필요하다.

극락코딩