1. IoC란?

    1. 프로그램의 제어 흐름을 개발자가 아닌 프레임워크가 제어하기 위한 패턴
    2. 외부에 의해 제어흐름이 관리되는 형태를 의미한다
  2. 스프링 프레임워크의 특징에 관해 설명해 주세요.

    1. AOP: 측면 지향 프로그래밍으로써 공통된 관심사를 분리하여 모듈성을 증가시키는 방식
    2. DI: IOC의 한 형태로써 클래스 사이의 의존 관계를 빈 설정 정보를 바탕으로 IOC 컨테이너가 주입해주는 방식
    3. PSA(Potable Service Abstraction): 비슷한 종류의 다양한 미들웨어의 상세 구현을 숨기고 통합된 인터페이스를 제공하는 방법
  3. spring mvc 구조 = 프론트 컨트롤러 패턴

    스크린샷 2020-02-25 오후 4.44.40.png

  4. spring bean 스코프의 구조

    1. singleton ****: 기본 싱글톤 스코프
    2. prototype ****: 어플리케이션에서 요청시 (getBean()) 마다 스프링이 새 인스턴스를 생성
    3. request ****: HTTP 요청별로 인스턴스화 되며 요청이 끝나면 소멸 (spring mvc webapplication 용도)
    4. session ****: HTTP 세션별로 인스턴스화되며 세션이 끝나며 소멸 (spring mvc webapplication 용도)
    5. global session ****: 포틀릿 기반의 웹 어플리케이션 용도. 전역 세션 스코프의 빈은 같은 스프링 MVC를 사용한 포탈 어플리케이션 내의 모든 포틀릿 사이에서 공유할 수 있다
    6. thread ****: 새 스레드에서 요청하면 새로운 bean 인스턴스를 생성, 같은 스레드에 대해서는 항상 같은 bean 인스턴스가 반환
    7. custom ****: org.pringframework.beans.factory.config.Scope를 구현하고 커스텀 스코프를 스프링의 설정에 등록하여 사용
  5. spring proxy 동작 과정

    1. CGLIB Proxy : interface가 없는 클래스의 경우 동작
    2. JDK Dynamic Proxy : interface가 있는 클래스의 경우 동작

    스크린샷 2020-02-25 오후 4.50.54.png

  6. spring aop 동작 과정

    1. 프록시 패턴을 기반으로 하여 어노테이션을 추가된 클래스,함수 등에 적용된다
    2. 해당 빈이 초기화 될 때, 해당 함수가 실행될 때 적용이 된다.
  7. 오버페칭, 언더페칭: API가 클라이언트가 요청하는 것 이상의 데이터를 내려주는 행위 , 또는 덜 내려주는 행위