[Spring] JWT
·
🌱 Spring/Spring Boot
토큰 기반 인증이란? 🤔토큰 기반 인증은 서버가 클라이언트에게 고유한 토큰을 발급하여 사용자를 구분하는 방식입니다. 클라이언트는 서버로부터 받은 토큰을 저장하고, 이후 요청 시 해당 토큰을 함께 전송하여 인증을 받습니다.토큰을 전달하고 인증받는 과정클라이언트가 ID와 비밀번호를 서버에 전달하며 인증을 요청합니다.서버는 ID와 비밀번호를 확인하여 유효한 사용자라면 Access Token과 Refresh Token을 생성하여 클라이언트에게 응답합니다.클라이언트는 서버에서 받은 토큰을 저장합니다.인증이 필요한 API 요청 시 Access Token을 함께 전송합니다.서버는 전달받은 토큰이 유효한지 검증하고, 유효하다면 요청을 처리합니다.Access Token이 만료된 경우 Refresh Token을 사용해 ..
[Spring] Spring Security
·
🌱 Spring/Spring Boot
Spring Security란? 🤔Spring Security는 스프링 기반 애플리케이션의 보안(인증, 인가, 권한)을 담당하는 스프링 하위 프레임워크입니다. 인증(Authentication)과 인가(Authorization)를 통해 애플리케이션을 보호하며, CSRF, 세션 고정 공격 등 다양한 보안 공격으로부터 애플리케이션을 방어합니다.인증(Authentication)과 인가(Authorization)인증(Authentication): 사용자의 신원을 확인하는 과정입니다. 예를 들어, 사용자가 로그인할 때 그 사용자가 누구인지 확인하는 절차입니다.인가(Authorization): 사용자가 애플리케이션의 특정 리소스나 기능에 접근할 수 있는지 확인하는 과정입니다. 예를 들어, 관리자만 관리자 페이지에 ..
[Spring] Spring Batch - Batch와 Job, Step
·
🌱 Spring/Spring Boot
Spring Batch란? 🤔Spring Batch는 대량의 데이터를 효율적으로 처리하기 위해 필요한 재사용 가능한 기능을 제공하는 프레임워크입니다. 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 오류 건너뛰기, 리소스 관리 등 대량의 레코드를 처리하는 데 필수적인 기능을 지원합니다.배치 프로그램(Batch Program)배치 프로그램은 대량의 데이터를 처리하는 작업을 자동화하는 프로그램을 의미합니다. 주로 스케줄러(Scheduler)를 이용하여 특정 시간에 수행하도록 구성되며, 예를 들어 매일 새벽 3시에 데이터를 업데이트하는 작업이 대표적인 배치 프로그램의 예입니다.스케줄러(Scheduler)스케줄러는 특정 시간에 실행되거나 일정한 간격으로 반복적으로 실행되도록 예약된 작업을 자동으로..
[Spring] QueryDSL
·
🌱 Spring/Spring Data JPA & QueryDSL
Querydsl란? 🤔Querydsl은 정적 타입을 사용하여 SQL과 같은 쿼리를 생성할 수 있도록 지원하는 라이브러리입니다. 즉, SQL 형식의 쿼리를 타입 세이프(Type-Safe)하게 작성할 수 있도록 DSL(Domain-Specific Language)을 제공하는 라이브러리입니다.DSL이란?DSL은 특정 도메인에서 발생하는 문제를 효과적으로 해결하기 위해 설계된 언어입니다. Querydsl을 사용하면, @Query를 통해 직접 JPQL 쿼리를 작성하는 대신, 컴파일 시점에 쿼리 오류를 잡을 수 있고, IDE의 코드 자동 완성 기능을 활용할 수 있습니다.주의: Spring Boot 2에서 3으로 업그레이드하면서 javax 패키지가 jakarta로 변경되었습니다.Querydsl 사용 방법1. Que..
[Spring] Spring Data JPA
·
🌱 Spring/Spring Data JPA & QueryDSL
JPA와 HibernateJPAJPA (Java Persistence API)는 자바 진영의 ORM (Object-Relational Mapping) 기술 표준으로 채택된 인터페이스 (Interface)의 모음이다.여기서 ORM이란, 객체 지향 언어에서 의미하는 객체 (클래스)와 RDB의 테이블을 자동으로 매핑 (Mapping)하는 방법을 의미한다.객체 지향 프로그래밍에서는 데이터를 객체 형태로 다루고, RDB는 데이터를 테이블 형태로 저장한다. 이 두 시스템 간에는 다음과 같은 불일치가 존재한다.Object와 RDB 간의 불일치상속: 객체 지향 언어에서는 상속을 통해 계층 구조를 만들 수 있지만, RDB에는 상속 개념이 없다.연관 관계: 객체 간의 연관 관계 (1:1, 1:N 등)를 표현하는 방법이 데..
[Spring] Spring MVC
·
🌱 Spring/Spring Boot
MVC 모델이란? 🤔MVC(Model-View-Controller) 모델은 프로그램의 처리 역할을 나누어 개발하는 방식을 의미합니다. 각 부분을 독립적으로 관리할 수 있게 하여 개발 효율성을 높이고 유지보수를 쉽게 만듭니다.MVC 모델의 구성 요소MVC는 세 가지 주요 구성 요소로 이루어져 있습니다:모델(Model): 시스템에서 제공하는 비즈니스 로직을 담당합니다. '비즈니스 로직'이란 시스템의 목적을 처리하는 핵심 부분을 의미합니다. 예를 들어, 회원 가입 시 ID 중복 확인이나 비밀번호 규칙 검사 등의 로직이 모델에서 수행됩니다.뷰(View): 사용자에게 입력받거나 결과를 출력하는 표현 부분을 담당합니다. 화면에 표시되는 부분입니다.컨트롤러(Controller): 사용자가 입력한 데이터를 모델에 전..
[Spring] @Annotation
·
🌱 Spring/Spring Boot
어노테이션(Annotation)이란? 🤔어노테이션(annotation)은 '주석'을 의미하는 용어로, 주로 @xxx 형태로 작성됩니다. 외부 소프트웨어나 프레임워크에 특정 처리를 전달하기 위해 사용되며, 코드를 좀 더 명확하고 유지보수하기 쉽게 만들어 줍니다. 이번 글에서는 어노테이션의 다양한 사용 사례와 '가려쓰기' 개념에 대해 알아보겠습니다.인스턴스 생성 어노테이션의 '가려쓰기'앞서 DI 컨테이너에서 인스턴스를 생성하는 어노테이션에 대해 이야기했습니다. 이번에는 인스턴스 생성과 관련된 네 가지 어노테이션을 '가려 쓰기' 하는 방법을 설명하려 합니다.'가려쓰기'란 네 종류의 어노테이션이 모두 인스턴스 생성을 위한 것이지만, 사용되는 위치에 따라 적절하게 구분해 사용하자는 의미입니다. 이때 사용되는 위..
[Spring] Spring AOP
·
🌱 Spring/Spring Boot
AOP란 무엇인가요? 🤔AOP(Aspect Oriented Programming)는 관점 지향 프로그래밍을 의미하며, 프로그램을 '핵심 관심사'와 '횡단 관심사'로 나누어 작성하는 방식입니다. 간단히 말해, 핵심적인 비즈니스 로직과 이와 관련된 부가적인 기능(로깅, 트랜잭션 등)을 분리하여 관리하는 것입니다.관점(Aspect)이란?프로그램의 기능을 구현할 때 이를 '핵심 기능'과 '부가 기능'으로 나누어 각각을 관점으로 볼 수 있습니다.핵심 기능: 비즈니스 로직의 핵심을 구현하는 것.부가 기능: 로깅, 트랜잭션 처리 등 반복적인 기능으로, 여러 비즈니스 로직에 공통적으로 적용되는 기능.AOP는 부가 기능을 별도의 모듈로 만들어 핵심 기능에 삽입함으로써, 프로그램의 유지보수성과 재사용성을 높여줍니다.AO..
[Spring] Spring IoC(Inversion of Control)와 DI(Dependency Injection)
·
🌱 Spring/Spring Boot
Spring IoC와 의존성 주입(DI)에 대한 이해Spring 프레임워크에서는 IoC(Inversion of Control, 제어의 역전) 개념을 사용하여 객체의 생성과 관리를 스프링 컨테이너에 맡깁니다. 이를 통해 개발자는 비즈니스 로직 작성에 집중할 수 있으며, 의존성 주입(DI)과 관점 지향 프로그래밍(AOP) 등의 기능을 보다 쉽게 사용할 수 있습니다.Spring IoC (Inversion of Control)IoC는 객체의 관리를 스프링 컨테이너에 맡겨 제어권이 개발자에서 컨테이너로 넘어가는 것을 의미합니다. 이를 통해 개발자는 객체의 생성과 라이프사이클 관리와 같은 번거로운 작업에서 벗어나 비즈니스 로직에 집중할 수 있습니다.IoC의 결과로 의존성 주입(DI), 관점 지향 프로그래밍(AOP)..