SpringBoot 4

CQRS 에 관해서 정리

CQRS Command Query Responsibility Segregation 의 약자로 명령과 쿼리의 책임을 분리하라는 의미를 가지고 있다. 예를 들어, 영화를 예매 하거나 예매를 취소하는 것은 Command(명령)이고 영화 예매 내역을 조회하는 것은 Query(조회)이다. 이를 분리하는 이유는 변경시점의 차이, 요구하는 성능의 차이 때문이다. 두 작업이 분리되지 않으면 명령처리를 한 후 데이터를 조회해서 보여줘야할 때, 즉시 데이터를 조회한다.이는 데이터베이스에서 동시에 읽기와 쓰기가 발생하게 되면서 명령 처리로 인한 데이터 베이스의 락(lock) 이나 트랙잭션 처리로 인해 조회 성능이 저하될 수 있다. 또한, 이렇게 동기화된 상태에서 조회를 처리하면 각각의 요구 사항에 맞는 최적화 모델을 사용할..

SpringBoot 2025.01.03

JWT (JSON Web Token)

🔑 JWT 토큰 ( Access Token, Refresh Token )JWT (JSON Web Token)란?JWT는 JSON 형식의 데이터를 포함하고 있으며, 세 개의 부분으로 구성된 문자열이다: Header, Payload, Signature.이 구조를 통해, 사용자와 서버 간의 통신에서 인증 정보를 안전하게 주고받을 수 있다.JWT의 구성 요소1. Header (헤더):토큰 타입 (JWT)과 서명 알고리즘 (예: HMAC SHA256)을 정의. { "alg": "HS256", "typ": "JWT" }2. Payload (페이로드):사용자 정보나 토큰의 클레임(claims)을 담고 있다. 이 정보는 인증 과정에서 사용된다.예를 들어, 사용자 ID, 이메일, 권한 등과 같은 정보를 포함할 수 ..

SpringBoot 2024.12.04

@PostConstruct

@PostConstruct는 Java에서 객체가 생성되고 의존성 주입이 완료된 후 초기화 작업을 수행하기 위해 사용되는 어노테이션입니다. Spring에서는 주로 빈(bean)의 초기화 작업을 위해 사용됩니다. 이 어노테이션이 적용된 메서드는 의존성 주입이 완료된 후 자동으로 호출되며, 빈이 애플리케이션 컨텍스트에 등록된 후 실행됩니다@PostConstruct 사용 시 주의 사항의존성 주입 후에 실행되므로, 반드시 모든 필드가 주입된 상태에서 초기화 작업을 수행해야 할 때 유용합니다.빈이 초기화되는 시점에 실행되므로, 애플리케이션 시작 시점에 필요한 준비 작업(초기 설정, 연결 테스트 등)을 수행하기에 적합합니다.Spring Boot 애플리케이션에서는 초기화 작업이 끝난 후 모든 컨트롤러가 실행되기 때문에..

SpringBoot 2024.10.31

Controller - service 리팩토링

1. Controller 의 부담을 줄이기 위한 Filter, interceptor 그리고 controllerAdvice a. Filter filter 는 servlet 컨테이너에서 요청과 응답을 처리하기 전후에 동작하는 기능. 인코딩 변환, 보안 체크, 로깅 등의 작업을 수행 filter 는 Servlet 컨테이너에 등록되며 Spring Security를 사용한다면 Dispatcher Servlet 앞 단에서 적용됨. b. Interceptor Interceptor는 Spring MVC 요청 전후에 동작하는 기능. c. ControllerAdvice 2. DTO 계층적 분리 DTO 는 Data Transfer Object 로 계층 간 데이터 교환 혹은 데이터 전송 객체를 의미. 계층적인 모델링을 구축할..

SpringBoot 2024.04.16