๐Ÿ”ฅ Spring Boot 3.4 + springdoc-openapi ์‚ฌ์šฉ ์‹œ ๋ฐœ์ƒํ•œ NoSuchMethodError ํ•ด๊ฒฐ๊ธฐ

์˜ค๋ช…์žฌยท2025๋…„ 7์›” 8์ผ

์ตœ๊ทผ Spring Boot 3.4 ํ”„๋กœ์ ํŠธ์—์„œ Swagger(OpenAPI) ๋ฌธ์„œ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด springdoc-openapi๋ฅผ ๋„์ž…ํ–ˆ๋Š”๋ฐ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” ํ•ด๋‹น ์—๋Ÿฌ์˜ ์›์ธ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์ƒํ™ฉ

ํ•ญ๋ชฉ์„ค์ •
Spring Boot ๋ฒ„์ „3.4.0
Java ๋ฒ„์ „17
Swagger ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌspringdoc-openapi 2.5.0

  • API ๋ฌธ์„œ ํ™•์ธ์„ ์œ„ํ•ด /v3/api-docs ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ๋ฐœ์ƒ

  • IntelliJ์—์„œ๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ ์—†์ด ์ž˜ ์‹คํ–‰๋˜์ง€๋งŒ, Swagger ๋ฌธ์„œ๋ฅผ ์š”์ฒญํ•˜๋Š” ์ˆœ๊ฐ„ 500 Internal Server Error ๋ฐœ์ƒ

์›์ธ ๋ถ„์„

โ— ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ControllerAdviceBean ์ƒ์„ฑ์ž ๋ถˆ์ผ์น˜

Handler dispatch failed: java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.(java.lang.Object)'

์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ด ๋ดค์„๋•Œ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

-> ๋”ฐ๋ผ์„œ ๋นˆ์„ ์ฃผ์ž…ํ•˜๋ฉฐ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ ํ˜น์‹œ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ ผ์ด ๋‹ฌ๋ผ์„œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š”๊ฐ€ ์˜์‹ฌ๋˜์–ด ๋จผ์ € ํ•ด๋‹น๋ถ€๋ถ„์„ ์‚ดํŽด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

springDoc ๊ณต์‹ ๋ฌธ์„œ์— ๊ฐ€๋ณด๋ฉด ๊ฐ๊ฐ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ ผ์ด ๋‚˜์™€์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•œ๊ฒƒ์€ ์Šคํ”„๋ง๋ถ€ํŠธ 3,.4 ๋ฒ„์ ผ์ด์ง€๋งŒ Springdoc OpenAPI ๋ฒ„์ ผ์€ 2.5. ๋ฒ„์ ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ์˜€์Šต๋‹ˆ๋‹ค.

์–ด๋–ค์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ??

๋ฒ„์ ผ์— ๋”ฐ๋ผ์„œ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ ํ•˜๊ณ  ๊ตฌ๊ธ€๋ง๊ณผ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ํŒ๋‹จํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Springdoc OpenAPI 2.5. ๋ฒ„์ ผ์— ๋Œ€์‘๋˜๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๋ฒ„์ ผ์€ 3.2(springFramework 6.1)

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ ControllerAdviceBean์˜ ์ƒ์„ฑ์ž๋ฅผ ํ™•์ธํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ControllerAdviceBean(Object bean)
ControllerAdviceBean(String beanName, BeanFactory beanFactory)
ControllerAdviceBean(String beanName, BeanFactory beanFactory, ControllerAdvice controllerAdvice)

์ด๋ ‡๊ฒŒ 3๊ฐœ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ• ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ์ค‘์ธ ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๋ฒ„์ ผ์€ 3.4(springFramework 6.2)์€ ์–ด๋–ค ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ControllerAdviceBean(String beanName, BeanFactory beanFactory, ControllerAdvice controllerAdvice)

์œ„์™€๊ฐ™์ด ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฒƒ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

๋”ฐ๋ผ์„œ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ฒ„์ ผ์— ๋”ฐ๋ผ ์ƒ์„ฑ์ž๊ฐ€ ๋‹ค๋ฅด๊ณ  ๊ฐ๊ฐ์— ๋Œ€์‘ํ• ์ˆ˜ ์žˆ๋„๋ก Springdoc OpenAPI ๋„ ๋ฒ„์ ผ์„ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„ ๋˜์–ด์žˆ์–ด ์„œ๋กœ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ ผ์ธ 2.7์ด์ƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ ํ• ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋ฌธ์„œ

profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ์ง€๋ง์ƒ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€