ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 31th day (2021.11.21)
    TIL(Today I Learned) 2021. 11. 21. 21:54

    초기화 및 소멸자 콜백📌

    • 외부라이브러리 수정이 불가피할때는
      • @Bean의 initMethod와 destroyMethod를 사용
    • 외부라이브러리 수정이 불필요할때는
      • PostConstruct, PreDestroy Annotation 사용

    빈 스코프📌

    • 싱글톤 스코프(항상 같은 객체 스프링 빈을 반환한다.) : 기본 스코프

    • 프로토타입 빈

      • 스프링 컨테이너에서 조회할 때마다 새로운 스프링 빈 생성하고, 자동으로 의존관계 주입 및 반환
      • 스프링 컨테이너에서 관리 x, 클라이언트에서 관리 o, 직접 destroy를 선언

    싱글톤 빈과 프로토타입 빈을 같이 사용했을 시 문제점

    • 싱글톤 빈에 포함되어있는 프로토타입 빈은 이미 의존관계 주입이 완료된 상태이므로 새로 생성되지 않는다!

    싱글톤 빈과 프로토타입 빈을 같이 사용했을 시 문제점 해결방법📌

    • 자바표준에서 제공하는 provider 또는 스프링에서 제공하는 provider를 사용한다.(DL:Dependency Lookup)

    웹 스코프📌

    • request scope
      • 서로다른 HTTPrequest 요청이 들어오면 서로다른 빈 스코프를 생성 및 반환 및 소멸
      • UUID로 HTTPrequest 구별.
      • 실질적인 요청이 없을땐 Provider를 사용(Provider가 빈의 생성을 지연시켜주기 때문.)
        • 스프링 컨테이너에 의존관계 주입이 HTTP요청보다 먼저 실행되기 때문에 요청자체를 받지 못한다.
          • 그렇기 때문에 스프링 컨테이너 의존관계 주입 순서를 뒤로 늦춰주어야하고, Provider를 통해 의존관계 주입을 늦춰주는것이다.
        • 어떻게 주입을 늦춰주는가?
          • Provider는 요청이 왔을 때 스프링 컨테이너에 빈을 생성하는 성질을 갖고있다. 따라서, HttpRequest와 동시에 빈에 생성된다.
      • Provider의 대체 방식) Proxy
        • 대리 객체로 지정되어있다가 Http요청이 오면 진짜 객체(클래스 또는 인터페이스)로 변환된다.
        • CGLIB에서 제공하는 proxy를 이용해 request scope를 싱글톤과 유사하게 사용할 수 있다.
      • Provider와 Proxy의 핵심
        • 진짜 객체를 조회를 꼭 필요한 시점까지 지연처리한다는점.🎯(다형성과 DI가 가진 큰 장점)
      • Provider와 Proxy의 주의점
        • 싱글톤과 비슷하지만 다르다.
        • 무분별한 사용 x(유지보수가 어려워짐)

    궁금한점 📌

    • @Controller란?

      • 요청을 받고, 결정
      • 요청 수행은 @Service에서,
      • @Service 클래스는 수정을 최소화하는 것이 유지보수에 유리
      • View를 결정해서 보여주는 역할
    • @RequestMapping이란?

      • 요청에 대한 어떤 Controller 또는 어떤 메소드가 처리할지 결정.
    • @ResponseBody란?

      • 리턴을 view를 통해서가 아닌 HTTP Response Body 에 직접 쓰여지게된다.
    • HttpServletRequest란?

      • 사용자의 요청정보를 가져올 수 있다.
      • 예로) 사용자 아이디, 비밀번호를 요청하면 그 데이터를 HttpServletRequest에 넣어준다.
    • getRequestURL()이란?
      • 사용자가 어떤 URL로 요청했는지 알 수 있다.

    'TIL(Today I Learned)' 카테고리의 다른 글

    TIL 33th day(2021.11.23)  (0) 2021.11.23
    TIL 32th day(2021.11.22)  (0) 2021.11.22
    TIL 30th day(2021.11.20)  (0) 2021.11.20
    TIL 29th day(2021.11.19)  (0) 2021.11.19
    TIL28(2021.11.18)  (0) 2021.11.18
Designed by Tistory.