"DB에는 왜 파일 경로만 저장할까?" 파일 자체를 저장하지 않고 경로(Path)만 남기는 '분리 저장 전략'에 대해 정리해 보았다.
MultipartFile.transferTo()가 File과 Path를 모두 지원하는 이유를 자바의 발전 과정(IO vs NIO) 관점에서 정리했다. 아울러 로컬 저장을 넘어 외부 스토리지 스트림 업로드 방식과의 결정적인 차이점까지 가볍게 파헤쳐 보았다.
"당연히 true 아님?" spring.servlet.multipart.enabled 옵션이 왜 존재하는지 궁금해졌다. 단순히 사용법을 넘어, 이 설정을 일부러 꺼야(false) 하는 '반전의 상황'을 정리해 보았다.
"파라미터가 2개라 더 불편한 것 같은데, 왜 개별 컨버터 호출보다 편리하다는 걸까?" 단순히 사용법을 넘어 인터페이스 분리 원칙(ISP) 관점에서 바라본 컨버전 서비스의 존재 이유와 실무적 이점을 정리했다.
"@ExceptionHandler에 예외를 여러 개 넣으면 파라미터는 어떻게 써야 할까?" 공통 부모 타입 선언부터 파라미터 생략 가능 여부까지. 실무에서 어떤 기준으로 파라미터를 결정해야 하는지 정리해 보았다.
"편한 @ResponseStatus를 두고 왜 굳이 ResponseStatusException을 쓸까?" 글로만 봐선 이해되지 않던 사용 이유. 외부 라이브러리 예외 처리와 조건별 동적 코드 변경이라는 실무적 관점에서 실제 활용 예시를 코드로 정리해 보았다.
"4xx.html과 404.html이 다 있는데, 왜 /error-401은 404 화면을 띄울까?" 401 에러를 의도했지만 404를 마주치며 깨달은 사실. 상태 코드보다 앞서는 'URL 매칭'의 우선순위와 에러 페이지가 선택되는 내부 로직을 정리해 보았다.
오류 페이지 재요청 시 필터와 인터셉터가 중복 호출되는 현상, 그리고 이를 해결하는 서로 다른 전략. 왜 필터는 시스템 설정으로 해결되고 인터셉터는 경로 매칭에 의존해야 할까? 두 도구의 태생적 위치에 따른 판단 근거와 책임 영역의 차이를 정리해 보았다.
"@SessionAttribute는 왜 세션을 직접 만들지 못할까?" 단순히 코드를 줄여주는 기능을 넘어, 스프링이 왜 이 어노테이션에서 '세션 생성 능력'을 뺏었는지 그 설계 의도와 리소스 관리 전략을 정리해 보았다.
"왜 타입이 틀리면 검증(@Valid)조차 안 할까?" 김영한 강사님의 강의를 듣다 문득 궁금해진 데이터 바인딩과 Bean Validation의 우선순위! 스프링 MVC의 내부 동작 원리와 그 속에 담긴 '논리적 이유'를 정리해 보았다.
스프링 검증 오류 시 발생하는 메시지 코드의 계층적 생성 원리와 typeMismatch.java.lang.Integer 같은 공통 메시지가 실제 텍스트로 치환되는 내부 동작 과정 정리.
IntelliJ 환경에서 Spring Boot 메시지 관리 중 발생하는 한글 깨짐(???) 현상의 원인과 해결 방법 정리.
Java 17 / Gradle 환경에서 발생한 Lombok IllegalAccessError 원인과 해결 방법 정리.
일대다 단방향 매핑은 잘만 되잖아? 근데 왜 일대일 매핑에서는 외래키가 대상 테이블에 있으면 안되냐고...?
✅ 현상 운영 서버에서 스케쥴러가 중복 실행됨 ✅ 원인 @Component 어노테이션이 등록되어있는 상태에서 context-scan이 되면 bean이 두 번 선언되어 중복 실행됨 ✅ 해결 방법 해결 방법은 여러가지가 있는데, 그 중 component-scan을 사용
들어가기 앞서 이 글은 「디자인 패턴들」 문서를 공부한 내용을 정리한 글입니다. 모든 출처는 해당 문서에 있습니다. 1. 정의 부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하고, 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴 가
이 글은 「왕초보를 위한 Python」을 공부한 내용을 정리한 글입니다. 모든 출처는 해당 문서에 있습니다.어떤 조건이 만족되는 동안 아래에 쓴 문장들을 반복블록 내부의 소스코드들은 공백 네 칸 또는 Tab 키로 들여쓰기 해줄 것소스코드 입력 후 Enter 키 입력하여
이 글은 「왕초보를 위한 Python」을 공부한 내용을 정리한 글입니다. 모든 출처는 해당 문서에 있습니다.형식 : 변수명 = 값여러 개의 자료를 묶은 것리스트 내의 원소(element)의 갯수 확인 메소드인덱스는 0부터 시작사용자가 키보드로 입력한 모든 것을 문자열로
이 글은 「제로초의 자바스크립트 입문」을 읽으며 습득한 내용을 정리한 글입니다. 모든 출처는 해당 저서에 있습니다.하나의 명령이 끝날 때 필수는 아니지만 붙이기를 권장함한 줄에 여러 명령을 넣을 때는 명령마다 붙여주어 그다음 명령과 구분해야 함사람이 알아볼 수 있도록