기업용 엔터프라이즈 시스템이란 기업의 업무(기업 자체 조직의 업무, 고객을 위한 서비스 등)를 처리해주는 시스템을 의미
기업용 엔터프라이즈 시스템은 대량의 사용자 요청을 처리해야 하기 때문에 서버의 자원 효율성, 보안성, 시스템의 안전성이나 확장성 등을 충분히 고려해서 시스템을 구축하는 것이 일반적
데이터를 처리하는 하나의 작업 단위
커밋(commit)
롤백(rollback)
서버 / 클라이언트 측면에서는 서버 측 기능을 이용하는 쪽을 클라이언트라고 함.
(ex. 웹브라우저)
코드 레벨에서 어떤 클래스의 기능을 사용하는 측 역시 클라이언트라고 부른다.
여러가지 기능들을 목적에 맞게 그룹화 하여 묶어 놓은 것
이러한 모듈들은 Java의 패키지 단위로 묶여 있으며, 이 패키지 안에는 관련 기능을 제공하기 위한 클래스들이 포함되어 있다.
일반적으로 모듈은 재사용 가능하도록 라이브러리 형태로 제공되는 경우가 많다.
OOP의 핵심은 공통된 목적을 띈 데이터와 동작을 묶어 하나의 객체로 정의하는 것
객체를 적극적으로 활용함으로써 기능을 재사용할 수 있는 것이 큰 장점
객체를 잘 활용하기 위해선 관심사 분리 (Separation of Concerns, SoC)의 디자인 원칙을 준수해야 함
객체가 선언하는 모든 연산의 이름, 매개변수로 받아들이는 객체들을 시그니처라고 한다.
Authentication 객체는 Spring Security에서 사용되는 인증 정보를 담고 있는 객체로, 다음과 같은 정보를 포함할 수 있다.
이러한 정보들은 Authentication 객체를 통해 Spring Security에서 권한 검사 등의 보안 처리를 수행할 때 사용된다.
SecurityContextHolder는 Spring Security의 핵심 구성 요소 중 하나로, 현재 스레드에 대한 보안 관련 정보를 제공하는 데 사용되는 클래스이다. 이 클래스는 SecurityContext 객체를 담고 있으며, 이 SecurityContext는 인증된 사용자에 대한 정보를 담고 있는 Authentication 객체를 포함하고 있다.
SecurityContextHolder는 주로 다음과 같은 상황에서 사용된다:
SecurityContextHolder는 기본적으로 ThreadLocal을 사용하여 현재 스레드와 연관된 SecurityContext를 저장한다. 이를 통해 동시에 여러 사용자의 요청을 처리하면서 각 요청에 대한 보안 정보를 별도로 유지할 수 있다.
이 클래스를 사용하면 현재 인증된 사용자의 정보를 얻거나 변경할 수 있으며, 필요한 경우 다른 보안 관련 작업을 수행할 수 있다. 이를 통해 Spring Security가 제공하는 다양한 보안 기능을 효과적으로 활용할 수 있다.