Skip to content

Conversation

@coli-geonwoo
Copy link
Contributor

@coli-geonwoo coli-geonwoo commented Dec 15, 2025

🚩 연관 이슈

closed #230

🗣️ 리뷰 요구사항 (선택)

Summary by CodeRabbit

  • Chores

    • API 문서화 스타터를 2.6.0에서 2.7.0으로 업데이트했습니다.
    • Excel 관련 라이브러리 의존성을 제거하여 의존성 구성이 간소화되었습니다.
  • Removed Features

    • 서버에서 제공하던 Excel 다운로드 관련 자동 헤더 설정(Excel 내보내기 지원)이 제거되어 해당 방식의 엑셀 내보내기 동작이 중단됩니다.

이번 릴리스는 일부 엑셀 내보내기 기능 제거와 문서화 도구 업데이트가 핵심입니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@coli-geonwoo coli-geonwoo self-assigned this Dec 15, 2025
@coli-geonwoo coli-geonwoo linked an issue Dec 15, 2025 that may be closed by this pull request
@coderabbitai
Copy link

coderabbitai bot commented Dec 15, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

springdoc-openapi-starter-webmvc-ui를 2.6.0에서 2.7.0으로 업그레이드하고 org.apache.poi의 Excel 관련 의존성 두 개를 제거했으며, Excel 다운로드 관련 어노테이션(ExcelExport), 인터셉터(ExcelExportInterceptor)와 해당 인터셉터 등록(WebConfig.addInterceptors)을 삭제했습니다.

Changes

Cohort / File(s) 변경 요약
의존성 변경
build.gradle
springdoc-openapi-starter-webmvc-ui 버전 2.6.0 → 2.7.0; org.apache.poi:poi-ooxml, org.apache.poi:poi 의존성 제거
Excel export 제거 — 어노테이션
src/main/java/com/debatetimer/controller/tool/export/ExcelExport.java
런타임 어노테이션 ExcelExport 파일 삭제 (메서드 레벨 ExcelExport 어노테이션 제거)
Excel export 제거 — 인터셉터
src/main/java/com/debatetimer/controller/tool/export/ExcelExportInterceptor.java
ExcelExportInterceptor 클래스 삭제 (@Component, HandlerInterceptor 구현, Excel 헤더 설정 로직 제거)
인터셉터 등록 제거
src/main/java/com/debatetimer/config/WebConfig.java
addInterceptors(InterceptorRegistry) 메서드 제거로 ExcelExport 인터셉터 등록 중단

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • 집중 확인 포인트:
    • 프로젝트 전반에서 삭제된 ExcelExport 어노테이션·인터셉터가 참조되는 곳(컨트롤러, 테스트 등)이 없는지 검사
    • Excel 관련 비즈니스 로직이 더 이상 필요하다면 대체 구현 또는 문서화 필요 여부 확인
    • springdoc-openapi-starter-webmvc-ui 2.7.0 업그레이드로 인한 런타임 호환성(예: Spring Boot 버전) 검증
    • 제거된 POI 의존성으로 인해 빌드/패키징 또는 CI 파이프라인에 영향이 없는지 확인

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning Excel 관련 의존성 및 클래스(ExcelExport, ExcelExportInterceptor) 제거는 이슈 #230의 OpenAPI 버전 호환성 문제와 무관한 범위 외 변경사항입니다. OpenAPI 버전 호환성 해결과 무관한 Excel 관련 코드 제거는 별도의 PR로 분리하는 것을 권장합니다.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 주요 변경사항인 OpenAPI 버전 업그레이드를 통한 NoSuchMethodError 해결을 명확하게 요약하고 있습니다.
Description check ✅ Passed 연관 이슈 #230을 명시하고 있으며, 저장소의 PR 템플릿 구조를 따르고 있습니다.
Linked Issues check ✅ Passed PR의 변경사항들(springdoc-openapi 버전 업그레이드, Excel 관련 의존성 제거)이 이슈 #230의 요구사항인 OpenAPI 버전 호환성 해결과 일치합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/#230

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b9db557 and 703b1be.

📒 Files selected for processing (3)
  • src/main/java/com/debatetimer/config/WebConfig.java (0 hunks)
  • src/main/java/com/debatetimer/controller/tool/export/ExcelExport.java (0 hunks)
  • src/main/java/com/debatetimer/controller/tool/export/ExcelExportInterceptor.java (0 hunks)
💤 Files with no reviewable changes (3)
  • src/main/java/com/debatetimer/config/WebConfig.java
  • src/main/java/com/debatetimer/controller/tool/export/ExcelExportInterceptor.java
  • src/main/java/com/debatetimer/controller/tool/export/ExcelExport.java
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build-and-push

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@unifolio0 unifolio0 added the chore 기타 label Dec 15, 2025
@gemini-code-assist
Copy link

Summary of Changes

Hello @coli-geonwoo, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 Pull Request는 springdoc-openapi-starter-webmvc-ui 라이브러리의 버전 업데이트를 통해 발생하던 NoSuchMethodError를 해결하고, 동시에 사용되지 않는 Excel Export 관련 의존성을 정리하여 프로젝트의 안정성과 의존성 관리를 개선합니다.

Highlights

  • NoSuchMethodError 해결: springdoc-openapi-starter-webmvc-ui 라이브러리 버전을 2.6.0에서 2.7.0으로 업데이트하여 NoSuchMethodError를 유발하던 OpenAPI 버전 호환성 문제를 해결했습니다.
  • 불필요한 의존성 제거: 더 이상 사용되지 않는 org.apache.poi 관련 Excel Export 의존성(poi-ooxml, poi)을 build.gradle 파일에서 제거했습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

안녕하세요. PR 리뷰를 시작하겠습니다.

NoSuchMethodError를 해결하기 위해 springdoc-openapi 버전을 2.6.0에서 2.7.0으로 올리신 변경 사항을 확인했습니다. 이는 호환성 문제를 해결하기 위한 올바른 접근입니다.

다만, build.gradle 파일에서 Excel 내보내기 기능에 필요한 Apache POI 의존성을 제거한 부분을 발견했습니다. 관련 기능의 소스 코드(ExcelExport.java, ExcelExportInterceptor.java)는 여전히 프로젝트에 남아있어, 이 변경으로 인해 런타임 에러가 발생할 수 있습니다. 자세한 내용은 개별 코멘트를 참고해주세요.

implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-gson:0.11.5'

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

Excel 내보내기 기능과 관련된 ExcelExport.javaExcelExportInterceptor.java 파일이 코드베이스에 남아있는데, Apache POI 의존성을 제거하셨습니다. 이 변경으로 인해 Excel 내보내기 기능이 동작할 때 ClassNotFoundException이 발생할 가능성이 매우 높습니다.

Excel 내보내기 기능을 제거하려는 의도였다면 관련 클래스 파일들도 함께 제거해야 합니다. 만약 기능이 유지되어야 한다면, 이 의존성들은 다시 추가되어야 합니다.

    // Excel Export
    implementation 'org.apache.poi:poi-ooxml:5.2.3'
    implementation 'org.apache.poi:poi:5.2.3'

@github-actions
Copy link

github-actions bot commented Dec 15, 2025

Test Results

135 files  135 suites   14s ⏱️
285 tests 285 ✅ 0 💤 0 ❌
297 runs  297 ✅ 0 💤 0 ❌

Results for commit 703b1be.

♻️ This comment has been updated with latest results.

@github-actions
Copy link

github-actions bot commented Dec 15, 2025

📝 Test Coverage Report

Overall Project 88.7% 🍏
File Coverage
WebConfig.java 100% 🍏

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e118bad and b9db557.

📒 Files selected for processing (1)
  • build.gradle (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build-and-push
🔇 Additional comments (1)
build.gradle (1)

35-78: Apache POI 라이브러리 제거는 안전합니다.

코드베이스에서 org.apache.poi 패키지, XSSFWorkbook, HSSFWorkbook 등 Apache POI 관련 참조가 전혀 발견되지 않습니다. org.apache.poi:poi-ooxml과 org.apache.poi:poi 라이브러리는 실제로 사용되지 않으므로 제거해도 문제없습니다.


// Rest Docs & Swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

springdoc-openapi 2.7.0 Spring Boot 3.4.0 compatibility

💡 Result:

Short answer: springdoc-openapi 2.7.0 is listed as compatible with Spring Boot 3.4.x, but there are reported problems with the specific combination springdoc 2.7.0 + Spring Boot 3.4.0; the springdoc project recommends using the latest 2.x release (2.8.x) for Boot 3.4.x. [1][2]

Sources:

  • springdoc compatibility matrix (shows 3.4.x ↔ 2.7.x–2.8.x; recommends latest 2.x such as 2.8.x). [1]
  • Reported GitHub issue where swagger UI is not available with Spring Boot 3.4.0 + springdoc 2.7.0. [2]

🌐 Web query:

springdoc-openapi 2.7.0 release notes changelog

💡 Result:

Here are the v2.7.0 release notes / changelog highlights for springdoc-openapi:

  • Release: v2.7.0 (published Mar 21, 2025 on Maven; GitHub release entry 23 Nov timestamp shown). [1][2]
  • Added: SortAsQueryParam annotation, OAS v3.1 webhooks support, RequestBody-as-meta-annotation support, Encoding tests for multiple files/JSON payloads, display nullable request body with map type, README Gradle import. [1]
  • Changed/upgraded: spring-boot → 3.4.0; swagger-ui → 5.18.2; swagger-core → 2.2.25; spring-security-oauth2-authorization-server → 1.4.0; spring-cloud-function → 4.2.0-M1. [1]
  • Fixed (selected): fixes for bad schema return type with generic wrapper, issues loading API after spring-boot 3.4.0-M2, Swagger UI context-path problems, @hidden on controller class level, Kotlin ByteArray descriptions, preserving default media type order, content schema generation for @apiresponse, operationId deduplication with multiple content types, @JsonUnwrapped with PolymorphicConverter, Boolean parameter @Schema type bug, various other bug fixes and test fixes. [1]

Sources:

  • GitHub release v2.7.0 (full changelog). [1]
  • Maven repository index for springdoc-openapi starter artifacts (shows 2.7.0 published 2025-03-21). [2]

References:
[1] https://github.com/springdoc/springdoc-openapi/releases/tag/v2.7.0
[2] https://maven.wso2.org/nexus/content/repositories/public/org/springdoc/springdoc-openapi-starter-webmvc-ui/ (directory listing showing 2.7.0)


🏁 Script executed:

cd /root && find . -name "build.gradle" -type f 2>/dev/null | head -5

Repository: debate-timer/debate-timer-be

Length of output: 127


🏁 Script executed:

# Check if there are references to poi (Excel) in the codebase
rg "poi|excel|Excel" -i --type gradle --type java -c

Repository: debate-timer/debate-timer-be

Length of output: 678


🏁 Script executed:

cat -n build.gradle

Repository: debate-timer/debate-timer-be

Length of output: 5023


🏁 Script executed:

head -50 src/main/java/com/debatetimer/controller/tool/export/ExcelExport.java

Repository: debate-timer/debate-timer-be

Length of output: 383


🏁 Script executed:

head -50 src/main/java/com/debatetimer/controller/tool/export/ExcelExportInterceptor.java

Repository: debate-timer/debate-timer-be

Length of output: 1900


springdoc-openapi 버전을 2.8.x로 업그레이드하세요. 2.7.0은 Spring Boot 3.4.0과의 호환성 문제가 보고되었습니다.

springdoc-openapi 공식 문서에서는 Spring Boot 3.4.x와 호환성을 위해 2.8.x 버전을 권장합니다. 2.7.0은 Spring Boot 3.4.0-M2에 대한 수정사항을 포함하지만, 최종 릴리스(3.4.0)와의 조합에서는 보고된 문제가 있습니다. 2.8.x를 사용하면 NoSuchMethodError 문제를 안정적으로 해결할 수 있습니다.

또한 build.gradle에는 Apache POI 의존성이 없으므로, 원본 리뷰 코멘트의 "Excel 라이브러리 제거" 언급은 부정확합니다.

🤖 Prompt for AI Agents
build.gradle around line 73: the springdoc-openapi dependency is pinned to 2.7.0
which has reported incompatibilities with Spring Boot 3.4.x; update the
dependency to a 2.8.x release (e.g., 2.8.0 or the latest 2.8.x) in build.gradle,
refresh/resolve Gradle dependencies (./gradlew --refresh-dependencies), and run
the test suite to confirm the NoSuchMethodError is resolved; also remove or
correct any review note about Apache POI in PR text since build.gradle does not
contain that dependency.

Copy link
Member

@leegwichan leegwichan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/noti @coli-geonwoo
콜리, Gemini와 CodeRabbit이 첨언해 주었는데 확인 부탁드립니다. springdoc-openapi 버전 관련해서 그대로 갈거라면 관련 문서라도 첨부해주세요.

@coli-geonwoo
Copy link
Contributor Author

coli-geonwoo commented Dec 16, 2025

/noti

이슈에 적어놓았는데 PR에 적어놓지 못했네요... 설명은 다음과 같습니다. (+ Excel 관련 클래스들은 모두 지웠음)

GlobaExceptionHandler에 에러 추가 안한 이유

  • 해당 에러는 openapi에서 버전 불일치로 스프링 3.4에 존재하지 않는 ControllerAdviceBean 생성자 호출하여 발생합니다.
  • 여기서 발생하는 에러는 예외인 Exception이 아니라 말그대로 에러이므로 웹 요청 응답에 대한 예외가 아닙니다.
  • 따라서 ControllerAdvic로 처리가 불가합니다.

봇 요청은 어떻게 할거임?

Copy link
Contributor

@unifolio0 unifolio0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/noti
approve했습니다!

Copy link
Member

@leegwichan leegwichan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/noti appove 하겠습니다.

@coli-geonwoo coli-geonwoo merged commit 3bd25cf into develop Dec 17, 2025
6 checks passed
@coli-geonwoo coli-geonwoo deleted the chore/#230 branch December 17, 2025 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore 기타

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CHORE] OpenAPI 버전 충돌로 인한 NoSuchMethodError 해결

4 participants