SpringBoot 18

SSE(Server-Sent Events) 채팅 시스템

사전 기반 지식1단계 폴링 시스템 완전 이해 (MVC 패턴, JPA, Mustache)HTTP 통신의 한계: 클라이언트가 먼저 요청해야만 응답 가능JavaScript 기초: EventSource API와 이벤트 처리멀티스레드 개념: 동시성과 스레드 안전성에 대한 기본 이해 폴링 vs SSE 비교통신 방향클라이언트 → 서버 (요청/응답)서버 → 클라이언트 (푸시)연결 방식매번 새로운 HTTP 연결하나의 지속적인 HTTP 연결실시간성폴링 주기에 따른 지연즉시 전달 가능서버 부하높음 (불필요한 요청)낮음 (필요시에만 전송)네트워크 효율비효율적효율적구현 복잡도간단중간 SSE의 주요 활용 사례실시간 알림 및 알림 센터: 새로운 메시지, 친구 요청, 좋아요 등 서버에서 발생하는 이벤트들을 사용자에게 즉시 알릴 때 ..

SpringBoot 2025.09.02

폴링 채팅 시스템

사전 기반 지식Spring Boot 기본: @Controller, @Service, @Repository 어노테이션 이해Spring Data JPA: Entity, Repository 패턴 숙지HTTP 기본: GET, POST 요청/응답 이해HTML/JavaScript 기초: 기본 DOM 조작과 이벤트 처리Mustache 템플릿 엔진: 기본 문법 ({{}}, {{#}}) 폴링(Polling)이란?폴링은 클라이언트가 서버에 주기적으로 요청을 보내 새로운 데이터가 있는지 확인하는 통신 방식입니다. 폴링(Polling)이라는 용어는 클라이언트가 서버로부터 데이터를 계속해서 당겨오는(pulling) 행위에서 유래했습니다. 즉, 클라이언트가 서버에게 "새로운 데이터가 있나요?"라고 지속적으로 질문을 던져 응답을..

SpringBoot 2025.09.02

SpringBoot Base64

1. Base64란?Base64는 바이너리 데이터(이미지, 파일 등)를 텍스트로 변환하는 인코딩 방식입니다. 64개의 ASCII 문자(A-Z, a-z, 0-9, +, /)와 패딩 문자(=)를 사용해 안전하게 전송할 수 있게 합니다.2. 왜 사용하나요?텍스트만 허용하는 시스템(예: JSON, 이메일, HTTP)에서 바이너리 데이터를 보낼 때.데이터 손상 방지: 특수 문자가 바이너리에 섞이지 않음.예: 플러터 앱에서 파일을 Base64로 변환해 서버로 업로드.3. 어떻게 작동하나요?바이너리 데이터를 8비트 바이트로 봅니다.6비트 단위로 나눕니다 (3바이트 = 24비트 = 4개의 6비트).각 6비트를 0-63 숫자로 변환 후, Base64 테이블에서 문자로 매핑.나머지 비트가 부족하면 =로 패딩.도식화 (간단..

SpringBoot 2025.08.08

Swagger란?

Swagger란 무엇인가요?정의: Swagger는 REST API를 자동으로 문서화하고, 테스트할 수 있는 도구입니다. 개발자가 API 엔드포인트(예: /users, /login)를 쉽게 설명하고, 클라이언트가 API를 실시간으로 확인할 수 있도록 도와줍니다.주요 특징:API 문서를 자동 생성합니다. (수동으로 작성할 필요가 줄어듭니다!)인터랙티브한 UI(예: Swagger UI)를 제공해 API를 바로 테스트할 수 있습니다.JSON이나 YAML 형식으로 API 명세를 작성해 공유할 수 있습니다.왜 사용하나요?: 프로젝트에서 API를 여러 개발자나 팀이 사용할 때, 일관된 문서를 유지하고 실수 없이 테스트하려면 Swagger가 큰 도움이 됩니다.Swagger 사용 방법의존성 추가: build.gradle..

SpringBoot 2025.07.21

JWT란?

JSON Web Token 이란 뭘까?JWT란 무엇인가?JWT는 JSON Web Token의 약자로, 두 시스템 간에 정보를 안전하게 전송하기 위해 사용되는 토큰 기반 인증 방식입니다. 예를 들어, 클라이언트와 서버 간에 인증 정보나 사용자 상태를 유지하고 싶을 때 JWT를 활용합니다. JWT는 JSON 형태로 데이터를 저장하며, 그 데이터는 특정 형식으로 안전하게 교환됩니다.JWT의 구조JWT는 세 부분으로 구성됩니다:Header (헤더): 토큰의 타입과 해싱 알고리즘 정보를 담고 있습니다. 보통 'alg' (알고리즘)와 'typ' (타입)이라는 두 가지 속성이 포함되며, 예를 들어, {"alg": "HS256", "typ": "JWT"} 형태입니다.Payload (페이로드): 주로 사용자 정보나 데이..

SpringBoot 2025.07.21

이미지 업로드 기능

사용자 프로필 이미지 업로드 기능 추가파일 업로드의 핵심 개념MultipartFile: Spring에서 파일 업로드를 처리하는 핵심 인터페이스enctype="multipart/form-data": 파일 전송을 위한 필수 폼 속성정적 리소스 매핑: 업로드된 파일을 웹에서 접근 가능하게 하는 방법보안 고려사항파일 크기 제한 (5MB)파일 타입 검증 (이미지만 허용)고유한 파일명 생성으로 충돌 방지데이터베이스 설계파일 경로만 저장 (파일 자체는 파일 시스템에 저장)NULL 허용 필드로 선택적 기능 구현

SpringBoot 2025.07.21

AOP

AOP(관점 지향 프로그래밍)AOP란 무엇일까?AOP는 Aspect-Oriented Programming 약자로, 소프트웨어 개발에서 공통적인 작업(예: 로그 남기기, 오류 체크 등)을 프로그램의 핵심 로직과 분리해서 관리하는 방법입니다. 마치 요리할 때 메인 요리(고기 굽기)와 별도로 양념 준비나 설거지 같은 부가 작업을 따로 처리하는 것과 비슷 함.일반적인 프로그래밍 (OOP): 모든 코드를 하나하나 직접 써서 넣어야 함. 예를 들어, 모든 메서드에 로그를 남기려면 각 메서드에 log.debug("작업 시작");을 반복해서 넣어야 합니다.AOP의 장점: 공통 작업을 한 곳에서 설정하면, 프로그램 전체에 자동으로 적용. 마치 마법처럼 모든 곳에 똑같은 도구를 붙이는 느낌임.AOP의 핵심 개념AOP는 몇..

SpringBoot 2025.07.16

SSR&CSR

SSR과 CSR 개념 이해하기SSR (Server-Side Rendering)SSR은 서버에서 사용자에게 보여줄 페이지를 모두 구성하여 사용자에게 페이지를 보여주는 방식이다. 즉, 서버로부터 완전하게 만들어진 html파일을 받아와 페이지 전체를 렌더링 하는 방식이다.SSR의 특징서버에서 모든 작업 처리: 데이터 조회, HTML 생성, 페이지 완성새로고침 발생: 페이지 이동할 때마다 전체 페이지 새로고침템플릿 엔진 사용: Mustache, Thymeleaf 등으로 HTML 생성서버에서 완성된 HTML을 만들어서 보내주는 방식브라우저 요청 → 서버가 HTML 완성 → 완성된 페이지 전송 → 브라우저 표시 CSR (Client-Side Rendering)CSR의 특징서버는 데이터만 제공: JSON 형태로 순수..

SpringBoot 2025.07.14

JPA repository

JpaRepository란?Spring Data JPA에서 제공하는 인터페이스로, 기본적인 CRUD 메서드들을 자동으로 제공합니다.기존의 EntityManager를 직접 사용하는 방식에서 더 간편한 방식으로 발전findAll(), save(), findById(), deleteById() 등의 메서드를 자동 제공복잡한 쿼리는 @Query 어노테이션으로 직접 작성 가능JOIN FETCH란?JPA의 JPQL에서 사용되는 구문으로, 연관된 엔티티(예: Board와 User)를 한 번의 쿼리로 함께 조회. (INNER JOIN지연 로딩(Lazy Loading)에서 발생하는 N+1 문제를 해결.N+1 문제란? 메인 엔티티(Board)를 조회하는 1번 쿼리 + 연관 엔티티(User)를 조회하면 N번 쿼리가 실행되는..

SpringBoot 2025.07.14

REST API

REST API의 탄생REST는 Representational State Transfer라는 용어의 약자로서 2000년도에 로이 필딩 (Roy Fielding)의 박사학위 논문에서 최초로 소개되었습니다. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다고 합니다. REST 구성쉽게 말해 REST API는 다음의 구성으로 이루어져있습니다.자원(RESOURCE) - URI행위(Verb) - HTTP METHOD표현(Representations)HTTP METHOD의 알맞은 역할 POST, GET, PUT, DELETE 이 4가지의 Method를 가지고..

SpringBoot 2025.07.14