전체 글

Spring/스프링 핵심 원리 - 고급편

[스프링 핵심 원리 - 고급편] 프록시 패턴과 데코레이터 패턴

본문은 인프런의 [스프링 핵심 원리 - 고급편]를 수강하고 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 스프링 핵심 원리 - 고급편 1. 쓰레드 로컬 2. 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 패턴과 데코레이터 패턴 4. 동적 프록시 기술 5. 스프링이 지원하는 프록시 6. 빈 후처리기 7. @Aspect AOP 8. 스프링 AOP 개념 9. 스프링 AOP 구현 10. 포인트컷 11. 실무 주의사항 전 챕터에서는 템플릿 메서드 패턴과 콜백 패턴을 사용해서 코드 수정을 최소화하는 예제를 살펴봤다. 하지만 결과적으론 로그를 남기고 싶은 클래스를 일일히 모두 수정해야 한다는 사실은 변하지 않았다. 즉, 로그를 남기기 위해 원본 코드를 변경해야 한..

Spring/스프링 핵심 원리 - 고급편

[스프링 핵심 원리 - 고급편] 템플릿 메서드 패턴과 콜백 패턴

본문은 인프런의 [스프링 핵심 원리 - 고급편]를 수강하고 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다.스프링 핵심 원리 - 고급편 1. 쓰레드 로컬 2. 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 패턴과 데코레이터 패턴 4. 동적 프록시 기술 5. 스프링이 지원하는 프록시 6. 빈 후처리기 7. @Aspect AOP 8. 스프링 AOP 개념 9. 스프링 AOP 구현 10. 포인트컷 11. 실무 주의사항 전 챕터에서는 쓰레드 로컬을 이용해서 thread-safe한 로그 추적기를 구현해봤다. 그러나 이 로그 추적기의 도입으로 핵심 기능 코드 외에 부가 기능을 처리하는 코드가 포함되었다. 각 계층(controller, service, repositor..

테스트코드/ATDD, 클린 코드 with Spring

[ATDD, 클린 코드 with Spring 6기] 1주차 정리

1. 개요 이번에 회사 동기분들과 함께 Next Step에서 진행하는 ATDD, 클린 코드 with Spring 6기에 참여하게 되었다. 과정 속에서 배운 것과 정리할 내용을 남겨두고자 하는데, 아무래도 유료 강의이다 보니 많은 내용을 기재하기는 어려워서 간단하게만 가능할 것 같다. 1) ATDD vs TDD TDD는 단위 테스트를 기반으로, ATDD는 인수 테스트를 기반으로 코드를 작성 및 검증한다 TDD가 "구현한 대로 동작하는가?"에 집중한다면, ATDD는 시나리오 형태의 요구사항에 집중한다 2) 인수테스트(Acceptance Test)란? 명세나 계약의 요구사항이 충족되는지를 확인하는 테스트 작업을 종료시켜도 되는지 검증하는 테스트 3) 블랙박스 테스트 인수테스트는 블랙박스 테스트의 성격을 가지고..

Spring/스프링 핵심 원리 - 고급편

[스프링 핵심 원리 - 고급편] 쓰레드 로컬 (ThreadLocal)

본문은 인프런의 [스프링 핵심 원리 - 고급편]를 수강하고 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 스프링 핵심 원리 - 고급편 1. 쓰레드 로컬 2. 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 패턴과 데코레이터 패턴 4. 동적 프록시 기술 5. 스프링이 지원하는 프록시 6. 빈 후처리기 7. @Aspect AOP 8. 스프링 AOP 개념 9. 스프링 AOP 구현 10. 포인트컷 11. 실무 주의사항 본 챕터에서는 멤버 변수를 이용한 로그 추적기에서 동시성 문제가 발생하는 것을 살펴보고, 쓰레드 로컬을 이용함으로써 동시성 문제를 해결하는 것을 공부했다. 먼저 기본 뼈대코드를 간단하게 살펴보자. TraceId public class TraceI..

트러블슈팅

[트러블슈팅] org.springframework.web.bind.MissingServletRequestParameterException 에러

1. 개요기존에 단건 조회 기능만 있던 상황에서 새롭게 복수 조회 기능을 추가했는데, 모니터링 툴 상에서 갑자기 500 에러가 급증하는 것을 보고 급히 확인에 들어갔다. 에러 로그와 API 구성(재현 코드)는 아래와 같았다.에러 로그org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter '...' for method parameter type List is not present at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValueInternal(RequestParam..