Skip to content

refactor(config): 즉시 덮어써지는 예외 상태코드 설정 제거 - #76

Merged
jei007 merged 1 commit into
eGovFramework:mainfrom
wantaekchoi:fix/exception-resolver-400-overwritten
Sep 9, 2026
Merged

refactor(config): 즉시 덮어써지는 예외 상태코드 설정 제거#76
jei007 merged 1 commit into
eGovFramework:mainfrom
wantaekchoi:fix/exception-resolver-400-overwritten

Conversation

@wantaekchoi

Copy link
Copy Markdown
Contributor

수정 사유 Reason for modification

  • 버그수정 Bug fixes
  • 기능개선 Enhancements
  • 기능추가 Adding features
  • 기타 Others

수정된 소스 내용 Modified source

EgovConfigWeb.configureHandlerExceptionResolversSimpleMappingExceptionResolver 에 넘길 상태코드 맵을 Properties 로 만듭니다. 118행과 119행이 같은 키 sample/egovSampleError 에 400 과 500 을 차례로 넣는데, PropertiesHashtable 이라 뒤엣값만 남습니다. 124행 setStatusCodes 가 받는 맵은 항목 하나 {sample/egovSampleError=500} 이고, 400 은 등록되는 순간 사라집니다.

400 이 들어갈 자리도 없습니다. 111~115행의 예외 매핑 다섯 줄이 모두 같은 뷰를 가리키고 122행 setDefaultErrorView 도 같은 뷰라, 이 맵의 키가 될 수 있는 뷰 이름은 하나뿐입니다. 뷰가 하나면 상태코드도 하나입니다.

src/main/java/egovframework/example/config/EgovConfigWeb.java

 		Properties statusCode = new Properties();
-		statusCode.setProperty("sample/egovSampleError", "400");
 		statusCode.setProperty("sample/egovSampleError", "500");

영향 범위

응답 상태코드는 바뀌지 않습니다. 지우는 줄이 처음부터 효과가 없었기 때문입니다. 달라지는 것은 읽는 쪽입니다 — 지금 코드는 400 으로 응답하는 경우가 있는 것처럼 읽힙니다.

검증

덮어쓰기 자체는 빌드 없이 확인됩니다.

$ jshell -s - <<'EOF'
var statusCode = new java.util.Properties();
statusCode.setProperty("sample/egovSampleError", "400");
statusCode.setProperty("sample/egovSampleError", "500");
System.out.println(statusCode);
EOF
{sample/egovSampleError=500}

118행이 있는 상태와 없는 상태에서 각각 전체 스위트를 돌렸고, 결과가 같습니다.

$ mvn -B test
[...]
[INFO] Tests run: 54, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS

JUnit 테스트 JUnit tests

  • JUnit 테스트 JUnit tests
  • 수동 테스트 Manual testing

새 테스트는 넣지 않았습니다. 동작이 바뀌지 않아 수정 전후로 결과가 갈리는 테스트를 만들 수 없습니다. 기존 스위트는 위와 같이 회귀 확인용으로만 돌렸습니다.

테스트 브라우저 Test Browser

  • Chrome
  • Firefox
  • Edge
  • Safari
  • Opera
  • Internet Explorer
  • 기타 Others

해당 없음 (화면 영향 없음)

테스트 스크린샷 또는 캡처 영상 Test screenshots or captured video

해당 없음. 위 jshell 출력으로 대신합니다.

SimpleMappingExceptionResolver 의 statusCodes 는 뷰 이름을 키로 쓰는
Properties 라, 같은 키에 두 번 넣으면 뒤엣값만 남는다. 바로 다음 줄이
같은 'sample/egovSampleError' 에 500 을 넣으므로 400 설정은 등록 시점에
사라져 어떤 예외도 400 으로 응답하지 않는다.

exceptionMappings 다섯 줄과 setDefaultErrorView 가 모두 같은 뷰를 쓰는
구조라 이 설정이 표현할 수 있는 상태코드는 하나뿐이다. 효과가 없는 줄을
지운다. 응답 상태코드는 바뀌지 않는다.

@jei007 jei007 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

표준프레임워크에 대한 지속적인 참여에
대단히 감사드립니다.

@jei007
jei007 merged commit 2d37468 into eGovFramework:main Sep 9, 2026
1 check passed
@wantaekchoi
wantaekchoi deleted the fix/exception-resolver-400-overwritten branch September 9, 2026 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants