인터넷 브라우저(클라이언트) 와 서버가 데이터를 주고받는 통신 방법인 HTTP(HyperText Transfer Protocol) 는 결국,Web 기반에서 동작하기 때문에 네트워크에 대한 지식이 필수복잡한 인터넷 세상에서 컴퓨터와 컴퓨터끼리 데이터를 주고받기 위하여 정
Spring 입문 2주차Spring 입문 3주차MVC 레이어 관심사 분리
스프링 구조가 조금 헷갈려서 짚고 넘어갔다.
IDE클라이언트-서버
다음은 예외처리의 흐름을 도식화한 것이다.이 부분에서 예외가 발생하지 않을시 '정상 응답 반환' 하는 부분에서 이해가 가지 않는 부분이 있었다.ResponseEntity<> 를 쓰는 이유 HTTP 상태 코드와 응답 바디를 함께 제어할 수 있기 때문이다.따라서 예외
객체 생성을 더 명확하고 읽기 쉽게 하기 위해Builder 는 유연하지만 쓰기 번거로움 --> of() 는 Builder 를 감싸는 편의 메서드 역할을 함static: 클래스 레벨에서 접근할 수 있게 함 (new 없이 사용 가능)of(): 명확한 의미 전달 + Buil
: 클래스의 인스턴스를 오직 하나만 생성하도록 보장하는 디자인 패턴즉, "같은 객체를 계속 새로 만들지 말고, 한 번 만든 것을 재사용하자!" 라는 뜻인스턴스는 단 한 번만 생성됨전역적으로 공유됨메모리 효율이 좋고, 객체 생성 비용 절감Spring 은 기본적으로 모든
주로 HTTP 요청/응답 레벨에서의 처리가 필요할 때 사용ex) 인증 체크, API 로깅, CORS주로 비즈니스 로직 내부에서의 공통 처리에 적합ex) 메서드 실행 시간 측정, 트랜잭션, 예외 감싸기Interceptor 로 API 요청을 기록하고,AOP 로 내부 서비스
클라이언트가 요청하면,DispatcherServlet 이 어떤걸 요청했는데 핸들러를 조회한다는 것이 어떤 메서드를 실행할지 컨트롤러에서 메서드를 찾기HandlerMapping 컴포넌트 사용대표적인 구현체 RequestMappingHandlerMapping이 객체가 @R
다른 조 발표 영상을 보다가 '룩업 테이블' 이라는 생소한 용어를 접해 알아보게 됐다. 룩업 테이블(Lookup Table) > 값을 빠르게 찾기 위한 미리 만들어 놓은 표 > - 특정 입력값에 대해 미리 계산된 결과 값을 저장해 놓고, 나중에 해당 값을 빠르게 가
@RestController, @Controller 모두 스프링 프레임워크에서 웹 요청을 처리하는 클래스에 사용하는 애너테이션반환 방식과 목적이 다름전통적인 MVC 패턴의 컨트롤러에 사용반환 타입이 String 이면 뷰(View) 이름으로 처리됨데이터를 반환하려면 @R
데이터베이스 운영의 번거로운 작업을 AWS가 대신 관리해주는 서비스즉, DB 설치, 백업, 보안, 복구 등 서버 관리 부담을 줄여주고,✅ 개발자는 비즈니스 로직에만 집중할 수 있게 해줌서버에 Ubuntu 설치 → MySQL 수동 설치 → 사용자/포트 설정 → 보안설정…
ZSet(정렬된 집합)은 각 원소에 점수(score)를 부여하고 자동 정렬이 되는 Redis 자료구조입니다.사용이유:인기 검색어는 점수(검색 횟수)에 따라 실시간으로 정렬되어야 하며, 상위 N개를 빠르게 조회해야 합니다. ZSet은 이를 위해 설계된 구조입니다.핵심 명
Spring에서 WebSocket + STOMP 프로토콜을 통한 pub/sub 메시징 기능 활성화하는 어노테이션👉 @Configuration 클래스에서 사용👉 WebSocket을 통한 메시지 처리 기능을 활성화👉 STOMP (Simple Text Oriented
팀 컨벤션이 확실하게 있는데, 웹소켓으로 기능을 구현하고자 하니 지킬 수 없게되었다.그런데 그게 정상이라고 한다.WebSocket용 코드에서는 팀 REST 컨벤션 (BaseResponse 래핑 등)을 "그대로 적용하려고 억지로 할 필요 없음"→ WebSocket은 @M
일반적인 HTTP 요청:매번 HTTP 헤더에 Authorization(JWT) 넣음SecurityFilter가 처리함WebSocket:최초 핸드셰이크(Handshake) 요청은 HTTP로 가지만연결 후에는 별도 TCP 소켓 통신SecurityFilter는 작동 안 함!
WebSocket 기반 실시간 채팅 시스템STOMP + SockJS를 활용한 메시지 송수신채팅방 생성, 입장, 메시지 조회, 메시지 전송JWT 기반 인증 처리 (핸드셰이크 단계)WebSocket 연결 시 JWT 토큰을 HandshakeInterceptor에서 검증STO
🎤 5분 브리핑 발표 대본: 실시간 그룹 채팅 시스템 구현🟡 1. 문제 정의 (Why)안녕하세요. 저는 이번 프로젝트에서 WebSocket 기반의 실시간 그룹 채팅 시스템을 구현했습니다.이 기능이 왜 필요했는지를 먼저 말씀드리면,저희 서비스에는 그룹 기능이 존재했지
Spring 은 @Transactional 이 붙어있다고 해서, 메서드 내 모든 코드가 "커밋 이후" 에 실행되는 것은 아니다. 스프링의 트랜잭션은 메서드 본문 전체를 하나의 트랜잭션 경계 안에서 실행 메서드가 정상 종료(return)되면 커밋 순으로 동작하기 때
읽음(“read receipt”) 상태를 WebSocket 이벤트로만 처리한다면, 클라이언트가 실시간 연결을 못 잡았을 때는 누락될 수 있다. 그래서 보통 이 둘을 함께 제공한다고 한다. 1. WebSocket: 실시간 “누가 읽었는지” 즉시 푸시 알림 채팅 화면
하나의 발신자가 특정 메시지를 여러 수신자에게 동시에 전송하는 방식일반적으로 네트워크나 메시징 시스템에서 “1:N” 통신 패턴을 구현할 때 사용되며, WebSocket 기반 채팅 애플리케이션에서는 다음과 같은 방식으로 동작함Unicast(유니캐스트): 특정 한 대의 클
개선 대상: 채팅방 목록 조회, 읽음 상태 처리, 트랜잭션 후 브로드캐스트 로직주요 목표: N+1 쿼리 제거 및 코드 중복 최소화, 응답 속도 개선, 코드 가독성 향상핵심 결과: 채팅방 목록 조회 시 쿼리 수 1건으로 감소, Broadcast 로직 중복 50% 축소,