Spring Security와 ThreadLocal
·
Java
도입Spirng Security는 기본적으로 ThreadLocal을 사용한다. ThreadLocal이 무엇인지, 왜 사용하는지 좀 더 자세히 알아보고자 한다.ThreadLocal이란?각 스레드마다 독립적인 변수 공간을 제공하는 Java 클래스이다.HTTP 요청당 하나의 스레드가 할당되어 요청 처리 동안 인증 정보를 유지할 수 있다.따라서 같은 스레드 내에서만 SecurityContext에 접근 가능하다.Spring Security Context가 ThreadLocal 기반인 이유웹 애플리케이션의 멀티스레드 환경 특성과 보안 요구사항 때문!스레드별 컨텍스트 분리각 HTTP 요청은 별도의 스레드에 의해 처리된다. SecurityContext는 각 요청의 인증정보를 담고 있기 때문에 각 스레드별로 다른 정보를..
[Spring] 의존성 주입(Dependency Injection, DI)
·
Java
개발을 하다 보면 여러 클래스들이 서로 얽혀있는 복잡한 구조를 만나게 된다. 이때 Spring의 의존성 주입은 이런 복잡함을 깔끔하게 정리해주는 핵심 기술이다. ❓ 정의의존성 주입(DI)은 클래스가 필요로 하는 의존 객체를 직접 생성하지 않고, 외부에서 주입받아 사용하는 설계 패턴이다. Spring Framework에서는 IoC 컨테이너가 이 역할을 담당하여 객체의 생성과 의존성 관리를 자동으로 처리해준다. 쉽게 말해, 클래스 A가 클래스 B를 사용해야 할 때 A가 직접 B를 new로 생성하는 것이 아니라, Spring이 알아서 B 객체를 만들어서 A에게 전달해주는 방식이다. 예를 들면 음식점에서 요리사가 직접 재료를 구하러 다니는 것이 아니라, 누군가가 필요한 재료를 미리 준비해서 가져다주는 것과 같다..