[F-lab 모각코 챌린지 57일차] TIL

JeongheeKim·2023년 7월 27일

TIL

목록 보기
57/66

학습계획


  • Mockito
  • 인증 & 인가
  • 토비의 스프링 - 1.6 싱글톤 레지스트리와 오브젝트 스코프

Today I Learned


Mockito

Mock객체를 쉽게 만들고 관리하고 검증할 수 있는 방법 제공하는 프레임워크

  • Mock객체
    • 진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 mock객체의 행동을 관리하도록 제공하는 객체

인증 & 인가

  • Authentication
    • 특정 리소스에 접근하려고 할때 접근하는 사람의 신원을 확인하는 것
    • 예) 아이디, 비밀번호 로그인을 통해 어떤 회원인지 아는것
    • 인증을 수행하면 인가처리를 할 수 있다.
  • Authorization
    • 인증된 사용자에게 내부 리소스에 접근할 권리를 부여하는것
    • 인증 단계에서 발급받은 토큰을 통해 인가(Authorization) 내용을 전달받는다.

Spring Security

서블릿 필터 기반으로 동작

필터체인은 서블릿 컨테이너에서 관리하는 ApplicationFilterChain을 의미한다.
요청이 들어오면 서블릿 컨테이너는 URI를 확인해서 필터와 서블릿을 매핑

Spring Security에서 제공하는 Filter chain은 WebSecurityConfigurerAdapter 클래스를 상속받아 설정할 수 있다.

별도의 설정이 없다면 스프링 시큐리티에서는 SecurityFilterChain 중 UsernamePasswordAuthenticationFilter를 통해 인증 처리한다.


토비의 스프링

1.6 싱글톤 레지스트리와 오브젝트 스코프

스프링은 기본적으로 별다른 설정을 하지 않으면 내부에서 생성하는 빈 오브젝트를 모두 싱글톤으로 만든다.

이는 스프링이 엔터프라이즈 서버환경을 위해 고안된 기술이기때문인다.

많은 요청이 들어오는 환경에서 요청마다 빈을 생성할 수 없기 때문에

  • 싱글톤 패턴의 한계
    • private 생성자 때문에 상속이 불가하다.
      • 이로인해 객체지향의 단점인 다형성을 적용할 수 없다.
    • 싱글톤은 테스트 하기 힘들다.
      • 싱글톤 객체는 생성방식이 제한적이고, mock 오브젝트로 대체하기 힘들다.
    • 서버환경에서는 싱글톤이 하나만 만들어지는것을 보장하지 못한다.
      • 서버에서 클래스 로더를 어떻게 구성하고 있느냐에 따라 싱글톤 클래스 임에도 불구하고 하나 이상의 오브젝트가 생성될 수 있다.
    • 싱글톤의 사용은 전역상태를 만들 수 있기때문에 바람직하지 못함
      • 전역상태여서 어플리케이션 어디서든지 사용될 수 있는 위험에 노출되어있다.
  • 스프링에서 생성되는 빈은 싱글톤 스코프를 갖는다.
  • 오브젝트는 다른 오브젝트에 주입할 수 있는게 아니다. 오브젝트의 레퍼런스가 전달될 뿐이다. DI는 오브젝트 레퍼런스를 외부로부터 제공받고 이를 통해 여타 오브젝트와 다이나믹하게 의존관계가 만들어지는것이다.
  • 의존관계
    • 모듈이 의존관계가 있다고 할때 방향성을 지정해야한다.
    • A→B에 의존한다는 것은 B가 변경되면 A에 영향을 미친다는것
  • 의존관계 주입이란 아래 세가지 조건을 충족하는 작업이다.
    1. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스에만 의존하고 있어야한다.
    2. 런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제3의 존재가 결정한다.
    3. 의존관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공해줌으로써 만들어진다.

0개의 댓글