spring 3

[Spring] JWT 로그아웃 기본 코드 분석

1. 들어가며BenePicker 프로젝트를 진행하면서 인증을 JWT 기반으로 설계했다.로그인, 토큰발급까지는 비교적 자연스럽게 구현됐지만, 로그아웃 구현에서 예상 밖의 혼란을 겪었다."로그아웃인데… 왜 서버에서 아무것도 안 하지?"이번 글에서는 단순 구현이 아니라, JWT 로그아웃의 본질과 설계 관점에서의 깨달음을 정리해보려고 한다.2. 구현한 로그아웃 코드@PostMapping("/logout")public ResponseEntity logout() { return ResponseEntity.ok().build();} 처음 이 코드를 작성하면서 이런 생각이 들었다.“이게… 로그아웃 맞나?”로직이 없다.DB 접근도 없다.토큰 처리도 없다.그냥 200 OK 반환 끝이다.3. 왜 이렇게 구현했을까?이걸..

백엔드/회고 2026.04.03

[Spring] MyBatis vs JPA + XML vs Annotation, 직접 써보며 느낀 차이

1. 들어가며BenePicker 프로젝트를 진행하면서 회원 기능과 조회 기능을 구현하다 보니 자연스럽게 이런 고민이 생겼다.“MyBatis랑 JPA 뭐가 다른거지?”“MyBatis는 XML 써야 되는 거 아닌가?”“어노테이션이 더 편한데 왜 XML 쓰는거지?”처음엔 단순히 “편한 거 쓰면 되는 거 아닌가?”라고 생각했는데, 직접 코드 작성하면서 생각이 완전히 바뀌었다.2. MyBatis vs JPA — 근본적인 차이처음엔 둘 다 그냥 “DB 연결 기술”이라고 생각했는데, 실제로는 패러다임 자체가 다르다는 걸 느꼈다.→ MyBatisSQL을 직접 작성DB 중심 개발SQL → 객체 매핑→ JPA객체(Entity) 중심SQL을 자동 생성객체 → JPA가 SQL 생성2. 핵심 깨달음JPA는 “객체 중심”MyBa..

백엔드/회고 2026.04.03

[Swagger] Spring Boot Swagger 초기 설정 (feat. JWT 403 삽질기)

1. 도입 배경프로젝트를 진행하면서 API가 점점 많아지다 보니 이런 문제가 생겼다.API 요청/응답 형식이 매번 헷갈림프론트와 협업할 때 명세 전달이 불편함테스트를 Postman으로 계속 날리는 게 번거로움그래서 Swagger(OpenAPI)를 도입했다.2. Swagger 적용 과정이번 프로젝트에서는 아래 라이브러리를 사용했다.implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'설치 후 서버를 실행하면http://localhost:8080/swagger-ui/index.html 로 접속 가능하다.여기까지는 정말 쉽다.문제는 여기서부터 시작이었다.3. 가장 큰 문제: 403 에러 (Undocumented)Swagger에서 API..

백엔드/회고 2026.03.31