Spring + JPA 프로젝트에서 엔티티마다 복붙하는 Auditing 필드, CRUD 메서드, 응답 래퍼를 제네릭 추상화로 한 곳에 모으는 방법을 설명한다.
macOS에서 Warp를 버리고 Ghostty로 갈아타면서 zsh 환경을 새로 정리했다. 플러그인 순서 실수, find alias 함정 등 직접 삽질한 것들을 포함해서 기록한다.
결제 수단이 늘어날 때마다 if/else를 추가하고 있다면, 전략 패턴과 Spring Bean 자동 주입으로 OCP를 달성하는 방법을 소개한다.
GitHub Pages에 Hugo 블로그를 세팅하고 커스텀 도메인까지 연결한 과정. 레퍼런스 사이트를 정해 레이아웃을 맞추고, Cloudflare Workers로 조회수를 붙이기까지의 모든 삽질을 정리했다.
fixedRate vs fixedDelay vs cron 차이, 크론 표현식 작성법, 단일 스레드 함정, 그리고 다중 서버 환경에서 ShedLock으로 중복 실행을 방지하는 방법을 정리한다.
@Cacheable/@CacheEvict/@CachePut 동작 원리, 로컬 캐시에서 Redis로 전환하는 방법, Cache-Aside/Write-Through 전략, 캐시 스탬피드와 자기 호출 함정까지 정리한다.
@Async의 AOP 프록시 동작 원리, ThreadPoolTaskExecutor 설정, CompletableFuture 병렬 실행, 자기 호출·예외·ThreadLocal 전파 문제까지 실전 코드로 정리한다.
Spring 테스트의 세 계층 — JUnit5+Mockito 단위 테스트, @WebMvcTest 슬라이스 테스트, @DataJpaTest, @SpringBootTest 통합 테스트를 목적별로 구분하고 실전 코드로 정리한다.
@ControllerAdvice + @ExceptionHandler 전역 예외 처리 구조, BusinessException + ErrorCode Enum으로 Custom Exception 계층 설계하는 실전 패턴을 정리한다.
Spring Security의 DelegatingFilterProxy → FilterChainProxy → SecurityFilterChain 구조를 이해하고, JWT 인증 필터 구현, @PreAuthorize 인가, BCrypt 패스워드 처리까지 실전 코드로 정리한다.
개인정보처리방침