반응형
[Spring/예외 처리] swagger 어노테이션 도배를 줄여보자
Spring/Spring 기초2026. 8. 13. 22:58[Spring/예외 처리] swagger 어노테이션 도배를 줄여보자

Spring Boot에서 springdoc-openapi와 Swagger UI를 사용하면 Controller를 기반으로 API 문서를 만들 수 있다.처음에는 API 문서를 자세하게 작성하려고 @ApiResponse를 Controller마다 붙였다. API가 몇 개 없을 때는 큰 문제가 없었다. 하지만 API와 비즈니스 예외가 늘어나면서 Controller에서 실제 요청 처리보다 Swagger 어노테이션이 더 많은 비중을 차지하기 시작했다. 처음에는 "Swagger 어노테이션을 줄이고 싶다"고 생각했다. 그런데 구조를 따라가 보니 더 큰 문제는 코드의 길이가 아니었다.실제 API는 CommonExceptionCode를 기준으로 예외 응답을 만들고 있었지만 Swagger 문서는 Controller의 @Api..

Spring/Spring 기초2025. 6. 19. 00:36[Spring/기초] 외부 Api를 호출해서 서버 날리기 (외부 Api 호출 위험성 낮추기)

그냥 예외처리만 잘했는데요?좋아 그럼 너의 서버는 외부 api장애시 thread pool을 전부다 소모해버릴 것이다.외부 Api 호출시 생길수 있는 문제는 다음과 같다.타임아웃 미설정 - 외부 Api가 느려도 응답을 기다리며 스레드 점유벌크헤드 없음 - 외부 Api호출이 하나의 공유 스레드풀, 리소스풀을 사용해 장애가 전파됨서킷 브레이커 없음 - 실패가 연속해서 발생해도 계속 api를 호출함Retry 백오프 없음 - 일시적인 장애인데도 retry를 짧은 시간동안 계속 반복멱등성 없음 - 재시도 요청이 중복처리됨그럼 이제 이들의 자세한 원인 해결 법을 알아보자타임 아웃 미설정서블릿 서버의 경우 1요청 1스레드를 점유하게된다. 이때 wait time 설정이없어서 무한정 대기한다면 금방 스레드 풀이 소모될 것..

Spring/JPA2025. 6. 12. 18:59[Spring/JPA] JPA ID 생성 전략

JPA에서 Id 생성하기jpa를 사용해서 entity를 만들다보면 @Id 어노테이션을 사용하게된다. 이때 db에 id생성 방식을 잘 만들었다면 자동할당이 되서 신경쓰지 않아도돠나 직접할당을 사용하려면 @GeneratedValue를 사용해서 stretagy 옵션을 사용해서 설정할수 있다. 여기올수있는 값의 코드는 다음처럼 생겼다.Enum값으로 4가지가 있다@Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface GeneratedValue { GenerationType strategy() default GenerationType.AUTO; String gen..

[Spring/Batch] Spring Batch Domain Language of Batch
Spring/Batch2025. 1. 9. 21:23[Spring/Batch] Spring Batch Domain Language of Batch

이번글은 Spring Batch에 관한 글이다.SpringBatch는 Spring 생태계에 입문했다면 한번쯤 듣게되며 주로 대용량 처리에서 듣게 된다.Spring Batch 5.x.x version으로 진행할 것이며 이번글은 이 SpringBatch 카테고리의 2번재인 핵심 객체 및 관계에 대한 정의를 다뤄보려고 한다. 기본적인 개념을 다루기 때문에 코드에 대한 깊은 설명을 진행하지 않는다.공식 문서를 참고했다. Configuring a Step :: Spring BatchAs discussed in the domain chapter, a Step is a domain object that encapsulates an independent, sequential phase of a batch job and..

[Spring/기초] Valid 예외 처리 + 404, 405 (2)
Spring/Spring 기초2024. 9. 13. 01:23[Spring/기초] Valid 예외 처리 + 404, 405 (2)

문제지금 식별한 부분중 처리되지 않는 에러MethodArgumentNotValidException 400MissingServletRequestParameterException 400HandlerMethodValidationException 400NoHandlerFoundException 404HttpRequestMethodNotSupportedException 405이들은 공통응답처리가 되지 않았다valid, validate, 없는 url과 없는 method로 호출할때가 공통응답 처리가 되지 않았다.@RestControllerAdvicepublic class GlobalExceptionHandler extends ResponseEntityExceptionHandler이유는 ResponseEntityExc..

[Spring/기초] api 공통 응답 포맷 + 예외 처리 합치기 (2)
Spring/Spring 기초2024. 7. 15. 17:48[Spring/기초] api 공통 응답 포맷 + 예외 처리 합치기 (2)

공통 응답 포맷을 만드는 이유일관된 응답 형식 유지모든 API 응답을 일관된 형식으로 유지할 수 있다.이는 전체적인 프로그램의 유지 보수성을 높인다.로깅 및 모니터링같은 방식으로 응답을 하니 로깅 및 모니터링이 더 쉬워진다.보안 및 데이터 검증응답을 전역적으로 처리함으로써 민감한 정보를 숨기거나 데이터를 검증하는 등의 보안 작업을 일관되게 수행할 수 있다.ResponseBodyAdvice 공통 응답 포맷1. 공통 응답 코드 형식 정하기public interface ResponseCode { String name(); HttpStatus getHttpStatus(); String getData();}클라이언트에게 공통 응답 코드를 어떤 형식으로 보내줄 것인지 정의한다.@Getter@Requ..

반응형
image