테스트 코드 작성 중 문제 발생 - 의존성 주입
의존성 주입: 의미, 사용 이유, 종류
MVC 패턴 적용
Paging / [Spring Data JPA] Pageable & PageRequest & Page
패키지 분리 / default 패키지, constant 패키지
스프링부트 프로젝트 생성 / 스프링부트 도구
Primary Key / Candidate Key / Alternate Key / Super Key / Foreign Key
API Reference Documentation: Assertions
REST API / REST 목적, 특징
환경 설정 설치 설정 파일 생성 사용 예시 GET 적용 후: 적용 전: POST 적용 후: 적용 전: PUT 적용 후: 적용 전: PATCH 적용 후: 적용 전: DELETE 적용 후: 적용 전: OPTIONS 적용 후: 적용 전
HTTP 메소드 HTTP 프로토콜에서 사용되는 요청 방법 종류 GET 역할: 리소스 조회 특징: 데이터 조회만 수행하며 서버에 영향을 미치지 않음 (Idempotent, Safe) ex) /users, /products/{id} POST 역할: 새 데이터 생
https://naver.github.io/hackday-conventions-java/#_intellij https://github.com/naver/hackday-conventions-java/blob/master/rule-config/naver-intellij-formatter.xml
JWT 방식 클라이언트와 서버 간 인증 정보를 JSON 형식으로 인코딩한 토큰을 통해 교환하는 방식 토큰은 클라이언트에 저장되고(보통 Local Storage나 쿠키에 저장), 서버는 토큰 검증 수행 장점 확장성: 서버는 토큰을 검증하기만 하면 되므로 상태를 유지하지 않아도 되어 수평 확장(Scalability)에 유리 서버 부하 감소: 서버가 세션을...
Cookie > javax.servlet.http.Cookie 용법: 요청과 응답에서 쿠키를 다룰 때 사용 생성: setter 설정: response.addCookie(cookie) 보안: 적음 (secure, httponly) ResponseCookie > Spring Framework에서 제공하는 클래스 (Spring 5) 용법: 응답 헤더에서...
예시 속성 name(String name) 필수값, 주로 토큰 종류를 넣음 value(String value) 필수값, 주로 토큰을 넣음 maxAge(Duration maxAge) 만료 시간 default = null (세션 쿠키, 브라우저 종료 시 쿠키 삭제) domain(String domain) 유효한 도메인 설정 default = null ...
빈 문자열 ("") 빈 문자열을 넣는 것은 브라우저가 해당 쿠키의 값을 실제로 "비어있는 값"으로 처리하도록 합니다. 즉, 쿠키의 값이 비어 있는 것으로 인식하게 됩니다. 쿠키를 삭제하려는 의도를 나타내는 방법 중 하나로, 브라우저가 이를 정상적으로 처리하고, maxAge(0)과 expires를 설정하면 쿠키가 즉시 만료되고 삭제됩니다. 보통 빈 문자열을...
Spring Framework의 필터 기반 인증에서 사용되는 추상 클래스 요청(Request)이 들어올 때 한 번만 실행되는 필터 보통 FilterChain의 일환으로 동작하며, 다른 필터와 함께 요청 전/후 처리 수행
redisConnectionFactory() 역할 RedisConnectionFactory 빈을 생성하는 메서드 LettuceConnectionFactory(host, port)를 사용하여 Redis 서버와의 연결을 관리 이후 다른 RedisTemplate이 이 ConnectionFactory를 사용하여 Redis와 통신함 예시 @bean RedisCo...
ExtendWith vs SpringBootTest @ExtendWith 단위 테스트 Spring 컨텍스트를 로드하지 않음 → 빠르고 가벼움 @Mock을 사용하여 의존성을 직접 주입 특정 메서드를 개별적으로 테스트할 때 유용 @SpringBootTest 통합 테스트 Spring 컨텍스트를 로드함 → 실제 애플리케이션 환경과 유사 @MockBean을...
계층형 데이터베이스 데이터를 트리(Tree) 구조로 저장하는 방식의 데이터베이스 부모 노드는 하나 이상의 자식 노드를 가질 수 있음 자식 노드는 하나의 부모 노드만 가질 수 있음 장점 직관적인 데이터 구조 빠른 데이터 접근 데이터 보안 강화 (특정 계층의 데이터에 접근 권한 제한) 단점 새로운 계층의 추가/변경 어려움 부모 노드를 변경하면 모든 자식...

Issue ▼ 현 상황에서 대댓글 기능을 구현할 수 없다는 것을 알았음 Study 멘토님께서 계층형 데이터베이스에 대해 알아보라고 말씀해주심 조사한 내용: 계층형 데이터베이스 Solution > ### Adjacency List 각 댓글이 부모 댓글을 참조하도록 하는 방식 > ### Nested Set left와 right 값을 이용해 부모...
Spring Framework에서 제공하는 클래스 외부 API와의 HTTP 통신을 쉽게 할 수 있도록 도움 HTTP 요청 보내기 응답 데이터 처리 편리한 사용 설정 예시
Issue > Solution RefreshToken의 @Id import 설정 문제 원본글
현재 로그인한 사용자의 정보를 담고 있는 객체 Spring Security에서 로그인 인증 성공 후 Principal을 SecurityContextHolder에 저장 필요 시 @AuthenticationPrincipal을 통해 사용 가능 Spring Security에서 인증 처리 시 내부적으로 사용 로그인한 사용자 정보 가져오기 Principal 객체 ...
Issue > Swagger가 안됨 아래의 방법은 효과가 없었음 : Cause > @RestControllerAdvice GlobalExceptionHandler에 있던 @RestControllerAdvice의 문제였음 Solution 해결 중..
JPA 엔티티에서 공통적으로 필요한 속성과 기능을 모아둔 추상 클래스 모든 엔티티에 공통적으로 필요한 생성일, 수정일을 관리하기 위해 사용 중복 코드 제거 생성/수정 시간 자동 관리 - 객체 변경 이력 관리 소프트 삭제 구현 사용 준비 > JpaConfig Spring Data JPA의 Auditing 기능 활성화 생성/수정 시간 모든 엔티티에서...
STOMP Simple Text Oriented Messaging Protocol 텍스트 기반 메시징 프로토콜 웹소켓의 메시지 교환을 더 체계적으로 관리할 수 있도록 도와주는 프로토콜 메시지를 주고받는 표준적인 방법 제공 웹소켓(WebSocket) 위에서 동작 특
실시간 분산 메세지 시스템 클라이언트와 실시간으로 통신하면서, 여러 서버에서 동기화하는 방식 실시간 업데이트와 다중 서버 환경 구축 실시간성과 수평 확장성을 모두 확보 구현: STOMP WebSocket + Redis Pub/Sub 조합 WebSocket(STOMP): 클라이언트에게 실시간 데이터 푸시 Redis Pub/Sub: 실시간 데이터를 발...