springboot 55

[Spring Boot] 소셜로그인

✅ 카카오 소셜 로그인 전체 흐름 정리 (프론트, 카카오, 백엔드, DB, 브라우저 사이 데이터 흐름 중심) ### 🔐 전제 세팅 정보 • 프론트 주소: http://localhost:3000 • 백엔드 주소: http://localhost:8080 • 카카오 로그인 Redirect URI: http://localhost:8080/login/oauth2/code/kakao • 프론트 최종 리디렉트 URI: http://localhost:3000/oauth/callback 💡 카카오 소셜 로그인 상세 흐름 ✅ 1. 프론트: 로그인 버튼 클릭// React 등 프론트 코드window.location.href = "http://localhost:8080/oauth2/authorization/kakao"; ..

[Spring Boot] WebFlux

Spring WebFlux란? Spring WebFlux는 비동기(Asynchronous) 및 논블로킹(Non-blocking) 방식으로 동작하는 웹 프레임워크로, Spring 5에서 처음 도입되었음. ✅ Spring WebFlux의 특징 1. 비동기 & 논블로킹 (Asynchronous & Non-blocking) • 기존 Spring MVC는 요청을 처리하는 동안 스레드를 블로킹하지만, WebFlux는 논블로킹 방식으로 동작하여 높은 동시성 처리 가능. 2. 리액티브 스트림(Reactive Streams) 기반 • Publisher와 Subscriber 개념을 활용하여 데이터 스트림을 처리. • Project Reactor의 Mono와 Flux를 사용하여 비동기 데이터 흐름을 제어. 3. 함수형 엔드..

[Spring Boot] DAO와 Repository의 차이?

1️⃣ DAO (Data Access Object)란? DAO는 데이터베이스와의 직접적인 상호작용을 담당하는 객체로, SQL을 사용하여 CRUD(Create, Read, Update, Delete) 작업을 수행하는 계층을 의미함. 📌 특징 • 데이터베이스와 직접 연결하여 데이터를 조회, 저장, 수정, 삭제하는 역할. • JDBC, MyBatis, Hibernate, JPA 등 다양한 방법으로 구현 가능. • 비즈니스 로직(Service)과 데이터 접근을 분리하여 코드의 유지보수성을 높임. 📌 DAO 예제 (JDBC 사용)import java.sql.*;public class UserDao { private static final String URL = "jdbc:mysql://localhost:..

[Spring Boot] DAO

DAO (Data Access Object)란? 1️⃣ DAO 개념 DAO(Data Access Object)는 데이터베이스(DB)와 애플리케이션 간의 데이터 접근을 담당하는 객체임. 즉, DAO는 데이터베이스와 직접 상호작용하는 계층으로, 데이터를 조회, 저장, 수정, 삭제(CRUD)하는 역할을 함. DAO를 사용하는 이유: • 비즈니스 로직과 데이터 접근 코드의 분리 (유지보수성 증가) • 데이터베이스 변경 시 애플리케이션 코드에 최소한의 영향 • 코드의 재사용성을 높이고 가독성을 향상 2️⃣ DAO 패턴 구조 DAO는 MVC 패턴에서 Model 계층의 일부로 사용됨. DAO 패턴의 주요 구성요소: 1. Entity (DTO, VO) • DB 테이블과 1:1 매핑되는 데이터 객체 2. DAO (Dat..

[Spring Boot] ApplicationContext

ApplicationContext란? ApplicationContext는 스프링(Spring)의 핵심 인터페이스로, 스프링이 관리하는 Bean들의 생성, 관리, 설정 등을 담당하는 IoC 컨테이너임. IoC(Inversion of Control, 제어의 역전)란 객체의 생성과 관리를 프로그래머가 아니라 외부 컨테이너(스프링 컨테이너)에 맡기는 것을 의미하는데, 스프링에서 이 역할을 하는 컨테이너가 바로 ApplicationContext임. 즉, 스프링에서 사용되는 거의 모든 객체(Bean)는 ApplicationContext에 의해 관리된다고 보면 됨. ApplicationContext의 핵심 역할 ApplicationContext의 핵심적인 기능들은 다음과 같음. • Bean 생성 및 관리 • 의존성 ..

[Spring Boot] 스프링의 생성자 주입

스프링(Spring)의 생성자(Constructor) 주입이란? 스프링(Spring)에서 생성자 주입(Constructor Injection)이란, 객체를 생성할 때 스프링이 필요한 의존성(변수)을 생성자의 매개변수(parameter)를 통해 주입해주는 것을 의미함. 즉, 클래스가 의존하는 객체를 클래스 스스로 생성하는 것이 아니라, 스프링 컨테이너가 대신 생성하여 클래스의 생성자를 통해 전달하는 방식임. 💡 의존성 주입(DI, Dependency Injection)이란? 생성자 주입을 제대로 이해하려면 우선 의존성 주입(DI)의 개념을 알아야 함. 의존성 주입이란 객체가 직접 의존하는 다른 객체를 생성하지 않고, 외부(스프링 컨테이너)로부터 제공받는 방법임. 스프링에서는 의존성을 다음과 같은 방법으로..

[Spring Boot] Spring AI

⚡ 1. Spring AI란?Spring AI 는 Spring 생태계에서 AI 및 LLM(Large Language Model)을 쉽게 활용할 수 있도록 지원하는 프레임워크입니다.Spring Boot 기반의 애플리케이션에서 OpenAI, Hugging Face, LangChain 같은 AI 모델을 간편하게 통합할 수 있습니다. ✅ Spring AI의 주요 특징 • LLM (GPT-4, Gemini, LLaMA 등) 지원 • Prompt Management (프롬프트 관리) • RAG (Retrieval-Augmented Generation) 적용 가능 • Spring Boot와 자연스럽게 통합 • Vector DB (Pinecone, FAISS) 연동 가능 • 서버리스 AI API (OpenAI, Hug..

[Java] 롬복과 어노테이션 프로세서

⚡ 1. 롬복(Lombok)이란?Lombok(롬복) 은 반복적인 보일러플레이트(Boilerplate) 코드를 자동으로 생성하는 Java 라이브러리입니다.예를 들어, Getter, Setter, 생성자, toString() 등을 직접 작성할 필요 없이 어노테이션만으로 자동 생성할 수 있습니다. 📌 Lombok을 사용하면 코드가 간결해지고 유지보수가 쉬워짐import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class User { private String name; private int age;}📌 위 코드 실행 시 자동으로 getName(), setAge() 등의 메서드가 생성됨 ⚡ 2. Lombok은 어떻게 동작할까? (어노테이션..

BE/Java 2025.03.08

[Spring Boot] DispatcherServlet

⚡ 1. DispatcherServlet이란?DispatcherServlet 은 Spring MVC의 핵심 컨트롤러(Front Controller) 역할을 하는 서블릿입니다.클라이언트 요청을 받아 적절한 컨트롤러로 전달하고, 응답을 처리하는 역할을 합니다. 📌 쉽게 말하면? • 요청을 받고 → 컨트롤러에 전달 → 응답을 반환하는 중앙 컨트롤러 • Front Controller 패턴을 사용하여 모든 요청을 한 곳에서 처리 • Spring MVC에서 HTTP 요청을 처리하는 핵심 역할 수행사용자 → DispatcherServlet → 컨트롤러 → 서비스 → 리포지토리 → DB ↓ ViewResolver ↓ 응답..

[Spring Boot] 스프링 배치 (Spring Batch)

⚡ 1. 스프링 배치(Spring Batch)란?Spring Batch는 대량의 데이터를 일정한 주기로 처리하는 배치 작업을 수행하는 프레임워크입니다.스프링 기반으로 배치 처리 자동화 및 최적화를 지원하며, 데이터 읽기(Read) → 처리(Process) → 저장(Write) 의 흐름을 기본으로 합니다. ✅ Spring Batch 주요 특징 🔹 대량 데이터 처리 최적화 → 데이터베이스, 파일, API에서 데이터를 읽고 처리 후 저장 가능🔹 트랜잭션 관리 → 장애 발생 시 재시도(Retry), 롤백(Rollback), 체크포인트(Checkpoint) 지원🔹 스케줄링 연동 → Spring Scheduler, Quartz, Kubernetes CronJob과 연동 가능🔹 병렬 처리 지원 → 멀티스레드,..