Spring AI에서 커스텀 Advisor로 인터셉터 구현하기
커스텀 Advisor의 개념과 활용
Servlet 및 Spring AOP를 경험한 개발자라면 요청/응답을 가로채는 기능에 익숙할 것이다. 예를 들어, 로그 기록, 인증 처리 등이 대표적이다.
Spring AI의 Advisor는 이러한 인터셉터 역할을 수행하며, AI 호출 전후에 추가적인 처리를 가능하게 한다. 주요 용도는 다음과 같다:
호출 전: 사용자 입력 검증, 권한 확인, Prompt 변환 등
...
7월 10일 06:00에 게시됨
Spring 트랜잭션 관리의 아름다운 구현 방식
트랜잭션 개념 정리
트랜잭션은 논리적으로 연결된 작업 단위로, 모든 처리가 성공적으로 완료되거나 전혀 수행되지 않도록 보장합니다.
트랜잭션 특성 (ACID)
원자성: 트랜잭션은 분할될 수 없는 최소 실행 단위로, 전체 처리가 완료되거나 무효화됩니다.
일관성: 트랜잭션 수행 전후 데이터 상태가 일치해야 합니다.
격리성: 병행 처리 시 다른 트랜잭션의 영향을 받지 ...
7월 9일 02:11에 게시됨
스프링 프레임워크 핵심 기술: 모듈화와 유연성의 실현
개요
소프트웨어 개발에서 '고결합과 저결합' 원칙은 유지보수성과 확장성을 극대화하는 설계 철학입니다. 스프링 프레임워크는 제어 역전(IoC)과 AOP(Aspect-Oriented Programming)를 통해 컴포넌트 간 의존성을 명확히 분리하는 기능을 제공합니다. 본문에서는 스프링이 어떻게 시스템 내부 요소를 분리하고, 실제 개발 환경에서 이를 적용하는 방법에 대해 다룹니다.
Io ...
6월 28일 18:45에 게시됨
【黑马点评-3초 특가 쿠폰】3. 비관적 락 synchronized로 한 사람 한 번 구매 보장 및 단일 서버 초과 주문 초기 로직
한 사람 한 번 구매 제약 조건 해결 방법
비관적 락 사용 이유
기존의 낙관적 락 방식은 데이터 변경 여부를 확인해야 하며, 현재는 존재 여부만 판단하는 상황이라 CAS 기법을 활용하기 어렵다. 버전 번호를 사용할 수도 있지만, 추가 필드가 필요하다. 따라서 간단한 구현을 위해 비관적 락을 적용한다.
비관적 락 적용 절차
MyBatis-Plus로 시작/종료 시간 검증
...
6월 26일 16:47에 게시됨
스프링의 핵심: 의존성 역전과 객체 관리
1. 스프링 개요
1.1 소개
스프링은 소프트웨어 개발 분야에 '봄'을 선사한 프레임워크로, 기존 기술들을 통합하여 사용을 쉽게 만든다.
2002년 초반, 인터페이스21 프레임워크를 기반으로 설계 시작
2004년 3월 24일, 공식 버전 1.0 발표
창립자: 로드 존슨 (시드니 대학교 음악학 박사, 컴퓨터 전공)
핵심 철학: 기존 기술을 보다 쉽게 활용할 수 있도록 하는 것
대표 ...
6월 25일 22:23에 게시됨
스프링 부트 어드민을 통한 애플리케이션 모니터링 및 메트릭 확장
스프링 부트 어드민을 활용한 시각화 모니터링 설정
스프링 부트의 Actuator 기능은 기본적으로 /health, /info 등의 엔드포인트를 제공하지만, 추가적인 운영 정보도 필요합니다. 예를 들어 현재 활성 세션 수, 동시 요청 수, 지연 시간 등 다양한 메트릭 데이터를 수집하고 시각화할 수 있어야 합니다. 이 글에서는 Spring Boot Admin을 사용해 애플리케이션 상태를 실시 ...
6월 24일 22:46에 게시됨
SpringBoot와 Redis를 활용한 중복 요청 방지 전략
대용량 트래픽 환경에서 동일한 요청이 여러 번 처리되는 문제는 시스템 안정성을 해치는 주요 원인 중 하나입니다. 이 글에서는 Redis를 활용해 효과적으로 중복 제출을 차단하는 방법을 살펴봅니다.
중복 요청이 발생하는 상황
사용자 경험 측면에서 중복 요청은 다음과 같은 경우에 발생합니다:
버튼을 빠르게 여러 번 클릭
네트워크 지연으로 인한 클라이언트 재시도 ...
6월 23일 16:41에 게시됨
스프링 부트에서의 AOP(관점 지향 프로그래밍) 및 포인트컷 표현식 활용
AOP 핵심 개념
관점(Aspect): 로깅이나 권한 검사와 같은 공통 관심사를 모듈화한 구성요소로, @Aspect 어노테이션을 통해 클래스를 관점으로 선언한다.
조인포인트(Join Point): 메서드 호출이나 예외 발생과 같은 실행 시점의 특정 위치이며, 스프링 AOP는 메서드 수준만 지원한다.
어드바이스(Advice): 조인포인트에서 수행되는 동작으로 다섯 가지 유형이 있다:
@Bef ...
6월 13일 19:54에 게시됨
자바 디자인 패턴
디자인 패턴의 핵심 원칙
열린/닫힌 원칙
기능 확장은 열려 있어야 하며, 기존 코드 수정은 피해야 합니다. 시스템 유지보수 시 기존 로직 변경 없이 새로운 기능을 추가할 수 있도록 설계하는 것이 중요합니다.
리스코프 대체 원칙
확장성 구현을 위한 핵심 방식으로, 상속 구조를 통해 기존 클래스를 재사용하는 방식입니다.
의존 역전 원칙
시스템의 유연성을 높이기 위 ...
6월 12일 17:59에 게시됨
JDK 기반 동적 프록시로 메서드 인터셉션 구현하기
Java는 런타임 시점에 프록시 객체를 동적으로 생성할 수 있는 강력한 리플렉션 기능을 제공하며, 그 중 java.lang.reflect.Proxy와 InvocationHandler를 활용한 JDK 동적 프록시는 인터페이스 기반의 프록시 구현에 널리 사용된다. 이 방식은 별도의 서드파티 라이브러리 없이 순수 JDK만으로 AOP와 유사한 기능을 구현할 수 있어, 로깅, 트랜잭션 제어, 접근 권한 검사 ...
6월 12일 00:45에 게시됨