일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Spring Security
- java
- 관점지향프로그래밍
- request
- 인터셉터
- http
- Redis
- 트랜잭션
- mybatis
- 스프링 시큐리티
- 스프링
- aspect
- git
- Spring
- response
- proxy pattern
- spring boot
- exception
- RestControllerAdvice
- OOP
- Interceptor
- 객체지향프로그래밍
- network
- 디자인패턴
- 스프링부트
- Filter
- aop
- MYSQL
- 자바
- SQL
- Today
- Total
목록Spring Framework (38)
장쫄깃 기술블로그

Spring AI란?Spring AI는 Java/Spring 개발자가 LLM 기반 애플리케이션을 쉽게 만들 수 있도록 도와준다.OpenAI, HuggingFace, Claude 등 다양한 모델을 Spring Boot 환경에서 일관된 방식으로 호출할 수 있게 해주며, 프롬프트 템플릿, 챗 메모리, 벡터 검색 기반 QA(RAG) 등도 지원한다. 주요 특징은 다음과 같다.LLM 클라이언트 추상화OpenAI, HuggingFace 등 다양한 LLM을 공통 인터페이스로 호출Prompt 템플릿 지원Java 코드 기반 템플릿 구성 가능Memory 기능대화의 흐름을 저장/관리할 수 있는 MemoryStore 제공RAG(Retrieval-Augmented Generation)VectorStore 연동으로 문서 기반 질의..

Spring Modulith란?최근 MSA에 대한 피로도가 높아지면서 다시 모놀리스 아키텍처가 주목받고 있다. 하지만 전통적인 모놀리스가 아니라, 모듈화된 모놀리스, 즉 모듈러 모노리스(Modular Monolith) 방식이 각광받고 있다. Spring에서는 이를 지원하기 위해 Spring Modulith라는 공식 프로젝트를 제공하고 있다. 왜 Spring Modulith가 필요한가? 한때는 마이크로서비스 아키텍처(MSA)가 모든 문제를 해결할 수 있을 것처럼 여겨졌지만, 실제로는 다음과 같은 문제들이 자주 발생한다.인프라 구성의 복잡성 (Service Mesh, Gateway, Config Server 등)배포 및 테스트 환경의 어려움서비스가 많아질수록 높은 운영 비용너무 이른 마이크로서비스 전환으로..

CSRF(Cross-Site Request Forgery) 란?CSRF(크로스 사이트 요청 위조, Cross-Site Request Forgery)는 사용자가 신뢰하는 웹사이트를 대상으로 악의적인 요청을 보내도록 속이는 공격이다. 🔷 CSRF 공격 개념사용자가 사이트 A에 로그인하여 세션을 유지공격자가 사용자를 속여 사이트 A로 특정 요청을 보내도록 유도 (예: 계좌 이체, 비밀번호 변경)사용자의 인증 정보(세션, 쿠키 등)가 자동으로 포함되어 서버가 요청을 정상적인 사용자 요청으로 오인피해자가 원치 않는 작업이 실행됨 🔷 CSRF 방어 방법CSRF 토큰 사용: 요청마다 임의의 토큰을 포함해 서버에서 검증SameSite 속성 설정: 쿠키가 타 사이트 요청에서 전송되지 않도록 설정Referer / Or..

GraphQL이란?GraphQL은 API를 위한 쿼리 언어이자 이를 실행하기 위한 런타임으로, 클라이언트가 필요한 데이터만 명시적으로 요청하고 받을 수 있게 해 준다. REST API의 단점을 보완하고 유연한 데이터 요청 및 처리를 가능하게 한다. 주요 특징으로는 다음과 같다.1. 클라이언트 주도 데이터 요청클라이언트가 원하는 데이터의 구조를 지정하여 요청을 보내면, 서버는 정확히 그 구조에 맞는 데이터를 반환한다.query { user(id: 1) { id name email }} 2. 단일 엔드포인트REST API와 달리, GraphQL은 하나의 엔드포인트로 모든 데이터를 요청할 수 있습니다. (예: /grqphql) 3. Overfetching과 Un..

Redis Sorted Set을 사용한 이유대기열 시스템을 만들 때 Redis Sorted Set을 사용한 이유는 다음과 같다.우선순위 기반 작업 처리각 항목에 점수를 부여해 우선순위를 지정할 수 있으며, 점수에 따라 자동 정렬우선순위가 높은 작업을 먼저 처리하는 대기열 구현이 가능효율적인 데이터 조회 및 삭제ZRANGE, ZPOPMIN과 같은 명령어를 통해 O(log(N)) 시간 복잡도로 정렬된 데이터를 조회하거나 삭제시간 기반 작업 처리점수로 타임스탬프를 사용할 수 있어 예약 작업이나 시간 순서에 따른 작업 처리가 가능중복 방지Sorted Set은 동일한 키를 허용하지 않으므로 중복된 작업 추가를 방지하고 점수 업데이트로 대체 가능빠른 성능Redis는 메모리 기반 데이터베이스로 매우 빠른 읽기/쓰기 ..

분산락(Distributed Lock)의 필요성분산락(Distributed Lock)은 분산 시스템에서 여러 노드 또는 프로세스가 동시에 공유 자원에 접근하려 할 때, 충돌을 방지하고 자원의 일관성을 유지하기 위해 사용하는 기술이다. 이를 통해 여러 컴퓨터 또는 서버가 동시에 동일한 자원에 접근할 때 발생할 수 있는 문제를 해결할 수 있다. Redis는 기본적으로 싱글 스레드로 동작하므로, 단일 Redis 노드를 사용해도 동시성 문제는 발생하지 않는다. 따라서 리소스에 값을 설정하여, 값이 설정된 경우에는 다른 클라이언트의 접근을 차단할 수 있다. 필자는 분산 환경에서 선착순 신청 기능을 개발하면서, 처음에는 DB에 직접 락을 거는 비관적 락을 사용했다. 그러나 Deadlock이 자주 발생하자, 분산락으..

멱등성(Idempotent)이란?첫 번째 수행을 한 뒤 여러 차례 적용해도 결과를 변경시키지 않는 작업 또는 기능의 속성 멱등한 작업이란, 한 번 수행하든 여러 번 수행하든 결과가 동일한 작업을 의미한다. 멱등성이 보장되면 메소드가 여러 번 실행되어도 결과가 동일하기 때문에 안전하게 사용할 수 있다. 반면, 멱등성이 보장되지 않으면 동일한 요청을 중복해서 실행할 위험이 있다. 예를 들어, 동일한 등록 요청을 중복해서 실행한다면 중복되는 여러 개의 데이터가 생성될 수 있다. HTTP 메소드의 멱등성HTTP 메소드에도 멱등성이 있다. 메소드멱등성GETOPOSTXPUTOPATCHXDELEETEOHEADOOPTIONSOTRACEOCONNECTX GET, PUT은 리소스를 조회하거나 대체하는 메소드이기 때문에..

들어가며Spring Security 6.1부터 기존에 사용하던 and()와 non-Lambda DSL Method가 Deprecated 되고, 필수적으로 Lambda DSL을 사용하도록 변경되었다. 변경된 내용으로 스프링 시큐리티 JWT 로그인을 구현해보려 한다. 다만, 본 게시글은 스프링 시큐리티 위주의 내용만 작성하려고 한다. 로그인, 회원가입 등의 별도 비즈니스 로직 코드는 게시글 하단의 깃허브를 참고하길 바란다. 기술스택- Spring Boot 3.3.1- Spring Security 6.3.1- JPA- JWT(Access Token, Refresh Token) 구현- Spring Security 6.1 이후 lambda 문법을 이용한 코드 적용 JWT에 대한 설명이나 이전에 작성한 내용에 대해..

들어가며Spring Security 6.1부터 기존에 사용하던 and()와 non-Lambda DSL Method가 Deprecated 되고, 필수적으로 Lambda DSL을 사용하도록 변경되었다. 변경된 내용으로 스프링 시큐리티 세션 로그인을 구현해보려 한다. 다만, 본 게시글은 스프링 시큐리티 위주의 내용만 작성하려고 한다. 로그인, 회원가입 등의 별도 비즈니스 로직 코드는 게시글 하단의 깃허브를 참고하길 바란다. 기술스택- Spring Boot 3.3.1- Spring Security 6.3.1- JPA- Session, Form Login 구현- Spring Security 6.1 이후 lambda 문법을 이용한 코드 적용 스프링 시큐리티에 대한 설명은 해당 글을 참고하면 된다.링크 : https..