728x90

백엔드 58

[Spring] JWT 블랙리스트 전략

블랙리스트란?더 이상 유효하지 않다고 판단된 JWT 토큰을 별도의 저장소 (DB, Redis 등)에 저장해 놓고, 이 토큰이 사용되는 요청을 차단하는 방식입니다.JWT는 기본적으로 서버가 상태를 저장하지 않기 때문에 일반적으로는 발급된 토큰이 만료되기 전까지는 유효하다고 간주됩니다. 블랙리스트를 도입함으로써 만료되기 전 토큰을 강제로 무효화할 수 있게 됩니다.📌 Access Token 블랙리스트 전략Access Token은 보통 짧은 만료 시간을 갖고 있으며 요청마다 첨부되어 리소스에 접근하는 데 사용됩니다. 등록 방식로그아웃 시 또는 토큰 탈취가 감지되었을 때 해당 토큰을 블랙리스트에 저장클라이언트가 요청을 보낼 때마다 블랙리스트를 조회하여 해당 토큰이 유효한지 확인✅ 장점탈취된 토큰이라도 블랙리스트..

백엔드/Spring 2025.04.21

[Spring] Spring AOP 주의 사항 정리

Spring AOP 주의 사항프록시 내부 호출프록시 의존 관계 주입 (타입 캐스팅)프록시 내부 호출메서드가 프록시를 거쳐 실행되는 것이 아닌 실제 객체 내부에서 호출이 일어나는 것public class Service { public void external() { //외부에서 호출되는 메서드 log.info("call external"); internal(); //내부 호출 } public void internal() { //내부에서 호출되는 메서드 log.info("call internal"); }}external 메서드의 경우 외부에서 호출되어 프록시를 거쳐 오지만 external에서 호출하는 internal 메서드는 this로 자신 ..

백엔드/Spring 2024.11.12

[Spring] Spring AOP - Pointcut

Pointcut특정한 메서드 또는 메서드 실행 지점을 타겟팅하는 조건을 정의하는 표현식Advice 가 적용될 메서드를 지정하는 역할어떤 메서드에 어드바이스를 적용할지 결정하는 규칙을 정의표현식기본적으로 AspectJ 표현식 언어를 사용지시자(리턴타입 패키지.클래스.메서드(매개변수))지시자: 포인트컷 표현식 시작 키워드리턴타입: 메서드의 리턴 타입패키지.클래스.메서드: 해당 메서드를 포함하는 클래스와 메서드의 이름을 지정매개변수: 메서드의 파라미터 목록연산자와일드 카드(*): 모든 리턴 타입이나 모든 클래스, 모든 메서드 이름, 모든 파라미터 타입을 의미 -> 1개의 변수 의미두 점(..): 0개 이상의 매개변수 의미논리 연산자 &&, ||: 두 개 이상의 조건을 결합 가능예시//모든 메서드 실행 포인트컷..

백엔드/Spring 2024.11.10

[Spring] AOP - Aspect-Oriented Programming 개념

AOP - Aspect-Oriented Programming관점 지향 프로그래밍을 의미프로그램의 핵심 로직과는 별개로 공통적으로 적용되는 기능들을 모듈화하여 관리하는 방법론코드의 관심사 분리를 중점으로 다른 기능들이 서로 영향을 주지 않도록 함주요 개념 Aspect여러 모듈에 반복적으로 적용되는 공통 기능로깅, 트랜잭션 관리, 보안 등의 기능 등등@Aspect Join Point프로그램 실행 중에 AOP 기능을 삽입할 수 있는 지점Advice가 적용될 수 있는 모든 지점메서드 실행, 생성자 호출, 필드 값 접근, static 메서드 접근 등 프로그램 실행 중 지점스프링 AOP의 경우 프록시 방식을 사용해 메서드 실행 지점으로 제한 Advice조인 포인트에서 수행될 실제 코드Before Advice조인 포..

백엔드/Spring 2024.11.08

[Spring] 빈 후처리기 - BeanPostProcessor

BeanPostProcessor빈을 생성하고 의존성 주입이 끝난 후 빈의 초기화 메서드가 호출되기 전에 혹은 호출된 후에 추가적인 작업객체를 빈 저장소에 등록하기 전 조작이 필요할 때 사용컴포넌트 스캔을 사용하는 클래스를 프록시로 감싸 빈 등록 가능구성 요소 (인터페이스)BeanPostProcessor 인터페이스를 상속받아 구현 postProcessBeforeInitialization빈 초기화 전 호출되는 메서드빈을 수정하거나 필요한 전처리 가능default로 정의되어 상속 후 구현하지 않아도 됨 postProcessAfterInitialization빈 초기화 후 호출되는 메서드빈 상태가 초기화 된 후 호출되어 후처리나 프록시 추가 가능default로 정의되어 상속 후 구현하지 않아도 됨초기화 후 빈을 ..

백엔드/Spring 2024.11.07

[Spring] ProxyFactory

ProxyFactory스프링 프레임워크에서 프록시 객체를 생성하는 데 사용되는 유틸리티 클래스두 가지 종류의 프록시 생성 방법을 추상화하여 제공JDK 프록시: 인터페이스 기반CGLIB 프록시: 클래스 기반구성 요소target프록시가 감쌀 실제 객체ProxyFactory 생성 시 생성자로 넘기거나 setTarget을 통해 지정 가능//생성자ProxyFactory proxyFactory = new ProxyFactory(new HelloImpl());//setTargetProxyFactory proxyFactory = new ProxyFactory();proxyFactory.setTarget(new HelloImpl());  Advice프록시가 메서드 호출 시 실행할 로직실행 전 후 등 추가 로직이 구현되는..

백엔드/Spring 2024.11.06

[Spring] 동적 프록시

JDK 동적 프록시런타임 시 인터페이스를 구현하여 프록시 객체를 생성하는 기술 특정 로직이 같고 호출하는 메서드만 다른 경우 프록시 클래스를 직접 각각 작성할 필요 없이 동적으로 생성구성 요소InvocationHandler (Interface): 프록시 객체가 호출할 메서드에 대한 처리를 정의 java.lang.reflect.Proxy: 동적 프록시 객체를 생성하는 클래스사용 방법InvocationHandler 인터페이스를 상속받아 invoke 메서드를 구현invoke 메서드 내 프록시 객체가 처리할 로직을 구현Method의 invoke를 통해 프록시 객체에서 실제 객체로 요청을 전달Proxy.newProxyInstance() 동적 프록시 객체 생성첫 번째 파라미터로 인터페이스를 불러올 클래스로더를 전달..

백엔드/Spring 2024.11.05

[Spring] Proxy & Decorator Pattern

Proxy Pattern다른 객체에 대한 접근을 제어하는 대리 객체를 만드는 패턴실제 객체에 대한 접근을 간접적으로 처리주로 접근 제어나 지연 로딩등의 목적을 가지고 사용구성 요소Subject: 프록시가 제어할 실제 객체가 구현해야 하는 인터페이스Real Subject: 실제 비즈니스 로직을 구현한 클래스 -> 실제 작업 수행Proxy: 주제 인터페이스를 구현, Real Subject에 대한 참조를 가짐 -> 클라이언트의 요청을 Real Subject에 전달동작 과정클라이언트 요청클라이언트는 실제 객체가 아닌 프록시 객체에 요청실제 객체와 동일한 인터페이스를 구현하여 실제 객체를 호출하는 것처럼 보임프록시 객체 처리프록시 객체는 클라이언트로부터 받은 요청을 처리접근 제어 용도로 사용 시 실제 객체에 접근..

백엔드/Spring 2024.11.02

[Spring] Strategy & Template Callback

Strategy- 전략 패턴로직을 정의하고 이를 캡슐화하여 서로 교환 가능하게 만드는 패턴상속이 아닌 인터페이스를 위임받아 구현하는 방식으로 상속으로 인해 생기는 문제를 해결구성 요소Context: 전략 객체를 사용하는 클래스로 템플릿과 같은 변하지 않는 코드를 다루는 클래스Strategy Interface: 다양한 로직을 정의하는 인터페이스로 전략 클래스는 해당 인터페이스를 상속받아 구현Concrete Strategies: 인터페이스를 구현하여 특정 로직을 제공하는 클래스 사용 방법변하는 로직을 정의하는 인터페이스를 정의인터페이스를 통해 특정 로직을 구현한 클래스 생성공통된 로직을 정의하는 Context 클래스를 생성//strategy interface - 변경되는 로직을 정의하는 인터페이스 publi..

백엔드/Spring 2024.11.01

[Spring] Template Method

Template Method 패턴디자인 패턴 중 하나로 상위 클래스에서 로직을 정의하고 일부 단계를 하위 클래스에서 구체적으로 구현하도록 하는 패턴상속과 오버라이딩을 통한 다형성으로 문제를 해결하는 방식사용 방법공통된 로직을 정의한 부모 클래스를 생성사용마다 변경되는 부분을 상속을 통해 자식 클래스에서 구현하게 정의자식 클래스는 부모 클래스를 상속 받아 해당 메서드를 구현//부모 클래스public abstract class ParentClass { public final void execute() { long startTime = System.currentTimeMillis(); //공통 로직 beforeCall(); // 선택적인 훅 메서드 ..

백엔드/Spring 2024.10.31
728x90