반응형
Spring RestDocs 개선기(2) - 리플렉션을 이용한 Enum 문서 작성 자동화
개발/Spring2025. 1. 29. 22:43Spring RestDocs 개선기(2) - 리플렉션을 이용한 Enum 문서 작성 자동화

이전 글에서 Enum값을 팝업 형태로 띄워 UX를 개선하는 방법에 대하여 소개해드렸는데요, 이번 글에서는 작성에 대한 부분 또한 자동화를 해보겠습니다. 모든 예제 코드는 깃허브에서 확인하실 수 있으며, 여기에서 개선된 문서 체험을 해보실 수 있습니다. 링크 작성 자동화하기잠깐 이전 글에서 작성했던 테스트 코드에서 팝업 링크 문자열을 확인해보면 반복적인 부분이 있기에 따로 유틸 메소드를 만들어 링크가 걸리도록 해주겠습니다. EnumPopupLinkGenerateUtil.ktimport kotlin.reflect.KClassconst val ENUM_DOC_URL = "enums" // Enum Asciidoc 문서 경로fun generateEnumPopupLink(linkText: String, docum..

Spring RestDocs 개선기(1) - 커스텀 스니펫적용 + Enum 값 확인 UX 개선
개발/Spring2025. 1. 29. 19:00Spring RestDocs 개선기(1) - 커스텀 스니펫적용 + Enum 값 확인 UX 개선

Intro이전에 Spring RestDocs를 처음 사용하시는 분들을 위하여 Spring Rest Docs 예제 코드로 학습하기 라는 포스팅을 작성했습니다. 회사에서도 도입 이후 꽤나 만족하면서 잘 사용하고 있었지만, 아래와 같은 몇가지 불편한 부분이 있었습니다. 1. 기본 스니펫 템플릿 사용 시 필수 여부에 대하여 작성하기 힘들다.2. Enum에 대한 값을 수동으로 작성해주어야 한다.3. Enum의 값이 많을 경우 문서 상 설명 란이 너무 길어진다. 위 불편사항에 대하여 우아한 형제들 기술블로그의 Spring REST Docs에 날개를... (feat: Popup) 글을 참고하여 기존의 불편사항을 개선하고 실제로 적용한 내용을 예제와 함께 1편과 2편으로 나누어서 소개해드리려고 합니다. 모든 예제 코드..

Inner Class를 Bean으로 등록할 수 있는 경우와 없는 경우
개발/Spring2024. 11. 13. 11:37Inner Class를 Bean으로 등록할 수 있는 경우와 없는 경우

Inner Class를 Bean으로 등록할 수 없는 경우public class OuterClass { @Component class InnerClass { }}스프링 프로젝트 내부에 위와 같이 선언한 이너 클래스가 있습니다. 이너 클래스에 @Component를 붙여서 Bean으로 등록하려 하면 과연 Bean으로 등록이 잘 될까요? import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplicat..

예제 코드로 알아보는 Spring RestDocs
개발/Spring2024. 11. 13. 08:19예제 코드로 알아보는 Spring RestDocs

서버 API를 개발할 때, 프론트엔드 개발자와의 원활한 소통과 효율적인 관리를 위해 API 명세서를 작성하는 것은 필수적입니다. 다양한 API 문서화 도구가 있지만, 저는 개인적으로 사이드 프로젝트나 업무에서 Spring RestDocs를 선호합니다. Spring RestDocs는 테스트를 기반으로 문서를 생성하기 때문에 API 스펙이 변경되면 문서화 테스트도 수정해야 합니다. 이 과정에서 API 스펙과 실제 문서 간의 불일치를 방지할 수 있습니다. 또한, 프로덕션 코드에는 문서 작성을 위한 코드가 포함되지 않아, 코드의 가독성과 유지보수성이 뛰어납니다. 제가 일하고 있는 회사의 경우, 이전에는 체계적인 API 문서가 없어 프론트엔드 개발자와의 협업이 어려웠습니다. 그러나 Spring RestDocs를 ..

개발/Spring2023. 8. 17. 18:36로그추적기 - 3. 필드동기화

스프링 핵심원리 고급편 본 포스팅은 김영한님의 스프링 핵심원리 고급편 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. 로그추적기 버전 3 개발 이번에는 모든 요구사항을 만족은 하였으나, 실제 애플리케이션에 적용하기에는 너무 번거로웠던 버전 2를 개선하여 버전 3를 개발하여 보겠습니다. 먼저 LogTrace 인터페이스를 작성해줍니다. 이 인터페이스 에는 기존 로그추적기의 메소드에서 public으로 공개된 begin(), end(), exception()만 선언해줍니다. LogTrace public interface LogTrace { TraceStatus begin(String message); void end..

개발/Spring2023. 8. 17. 18:35로그추적기 - 2. 파라미터로 동기화

스프링 핵심원리 고급편 본 포스팅은 김영한님의 스프링 핵심원리 고급편 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. 로그추적기 버전 2 개발 버전 1에서는 로그에서 레벨을 표현하지 못하고, 고유한 HTTP 트랜잭션 ID 를 표현하지 못한다는 치명적인 단점이 있었습니다. 그래서 버전 2에서는 HelloTrace를 좀 더 개선하여 만족하지 못한 요구사항을 만족할 수 있도록 해보겠습니다. HelloTraceV2.java @Slf4j @Component public class HelloTraceV2 { private static final String START_PREFIX = "-->"; private stati..

개발/Spring2023. 8. 17. 18:34로그추적기 - 1. 프로토타입

스프링 핵심원리 고급편 본 포스팅은 김영한님의 스프링 핵심원리 고급편 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. 로그추적기 버전 1 개발 프로토타입 버전의 로그추적기를 먼저 만들고, 애플리케이션에 적용해봅시다. TraceId.java public class TraceId { private String id; //요청 트랜잭션 ID private int level; //메서드 깊이 level public TraceId() { this.id = createId(); this.level = 0; } private TraceId(String id, int level) { this.id = id; this.lev..

개발/Spring2023. 8. 17. 18:33로그추적기 - 개요

스프링 핵심원리 고급편 본 포스팅은 김영한님의 스프링 핵심원리 고급편 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. 상황 개요 회사에 입사를 했다고 가정합니다. 회사에서 개발하고 있는 애플리케이션의 규모가 점점 커져 코드는 수십만라인에 클래스는 수백개에 달하게 되었습니다. 이럴 때 장애상황에 빠르게 대응하기 위하여 로그를 미리 남겨놓으려고 하는데 각각의 기능마다 수동으로 로그를 남겨놓아도 되지만 이렇게 개발하게 된다면 비즈니스 로직에도 영향을 주고, 코드의 변경도 너무 많이 일어나기 때문에 좀더 효율적으로 개발하여야 합니다. 이런 상황을 가정하고 기존 애플리케이션에 영향을 주지 않으면서 로그를 남겨놓을 수 ..

개발/Spring2023. 8. 2. 22:55Spring에서 CORS 문제 해결하기

Intro 최근 CORS에 대하여 공부를 해보고, Spring에서 CORS 설정은 어떻게 하는지에 대하여 공부에 본 뒤, 직접 적용하는 코드를 작성하고 간단하게 정리하고자 합니다. 모든 코드는 https://github.com/DevCHW/spring-cors-example 에서 확인하실 수 있습니다. 혼자 공부하여 정리한 내용이라 틀린 부분이 있을 수 있습니다. 이 점 유의하여 읽어주시고 틀린 부분이 있다면 고쳐주시면 감사하겠습니다! Spring CORS 설정 방법 3가지 어노테이션 활용 WebConfig에서 글로벌하게 설정 Spring Security 설정 어노테이션 활용 Controller 클래스에서 @CrossOrigin 어노테이션을 이용하여 CORS를 적용할 수 있습니다. 클래스레벨에 어노테이션..

반응형
image
loading