ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹(Web) 정리
    취업 활동/면접 준비 2021. 1. 1. 15:50
    728x90

    웹 관련 지식

     

    1) Spring Framework

    - Spring 이 무엇인지?

      Spring이란 Java 플랫폼을 위한 오픈소스 어플리케이션 프레임워크입니다. Spring의 특징으로는 IOC를 통해 애플리케이션의 느슨한 결합을 도모시킨 것이 있습니다.

     

    - Servlet & Servlet Container & JSP

      Servlet이란 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 역할을 하는 자바 프로그램입니다.

     

      Servlet Container는 이러한 Servlet을 관리해주는 컨테이너입니다. 서블릿 생명주기 등을 관리합니다.

     

      JSP는 HTML문서 안에 자바 소스코드가 들어가는 구조를 가집니다. JSP는 WAS를 통해 Servlet 클래스로 변환되어 사용됩니다.

     

    DispatcherServlet

     

      서블릿 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 처리해주는 Front controller입니다. DispatcherServlet은 공통 처리 작업을 처리한 후, 적절한 세부 컨트롤러로 작업을 위임합니다.

     

      Spring MVC(DispatcherServlet)의 구성요소로는 LocaleResolver, HandlerMapping, HandlerAdapter, ViewResolver 등이 있습니다.

     

    - Spring MVC의 요청 처리 순서

    1. DispatcherServlet이 요청을 받아, 요청을 분석한다.

    2. 핸들러 매핑에게 위임하여 요청을 처리할 핸들러를 찾는다.

    3. 찾은 핸들러를 실행할 수 있는 "핸들러 어댑터"를 찾는다.

    4. 찾아낸 "핸들러 어댑터"를 사용해서 핸들러의 응답을 처리한다.

       4-1) 핸들러의 리턴 값을 보고 어떻게 처리할 지 판단한다.

         - ViewResolver가 뷰 이름에 해당하는 뷰를 찾아서 모델 데이터를 랜더링한다.

         - @ResponseEntity가 있다면 Converter를 사용해서 응답 본문을 만든다.

    5. (부가적으로) 예외가 발생했다면, 예외 처리 핸들러에 요청 처리를 위임한다.

    6. 최종적으로 응답을 보낸다.

     

    - Spring 과 Spring boot의 차이점

      스프링 부트는 자동 설정과 같은 기능을 제공해 빠르게 스프링 프로젝트를 실행할 수 있도록 합니다. Spring의 경우에는 서블릿 컨테이너가 먼저 작동하고 서블릿 애플리케이션이 동작하는 형태라면, Spring boot는 스프링 부트 어플리케이션이 먼저 작동하고, 내부적으로 서블릿 컨테이너가 동작하는 형태입니다.

     

    - MVC 패턴이란?

      MVC 구성요소로는 Model, View, Controller가 있습니다. Model은 데이터를 처리하는 부분입니다. View는 화면을 담당하는 부분입니다. Controller는 요청을 처리하는 부분으로 뷰와 모델 사이의 통신 역할을 합니다. MVC 패턴은 낮은 의존도와 높은 결합성으로 개발을 용이하게 해주고 유지보수를 쉽게 해줍니다.

     

      MVC 패턴에는 모델1과 모델2으로 나뉘게 됩니다. 모델1은 JSP에서 출력과 로직을 전부 처리하는 것이고, 모델2는 JSP에서 출력만 처리하는 것입니다.

     

    - 필터와 인터셉터의 차이는?

      필터는 spring context 외부에 존재하고, 인터셉터는 spring context 내부에 존재합니다. 따라서 필터와 인터셉터는 실행되는 시점에서 차이가 있습니다. 구체적으로 필터, 인터셉터 순으로 처리가 됩니다.(doFilter -> preHandler -> postHandler -> doFilter)

     

    - IOC

      인스턴스의 생성부터 소멸까지 개발자가 아닌 컨테이너가 대신 관리해주는 것을 말합니다. 컨테이너가 제어권을 갖음으로써, DI와 AOP 등이 가능하게 됩니다.

     

    - DI

      의존 관계 주입이며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 것이 아니라, 주입 받아 사용하는 방법입니다.

     

    - AOP 란?

      OOP를 보완하는 수단으로, 흩어진 관심사들을 하나로 모아서 Aspect로 모듈화하는 기법입니다. Aspect를 이용해서 핵심 로직을 구현한 각 클래스에 공통 기능을 적용합니다. 이를 사용하면 공통의 관심 사항을 적용해서 발생하는 복잡성과 코드 중복을 해결할 수 있습니다.

     

      스프링 AOP는 프록시 기반의 AOP 구현체로, 런타임 시 A객체의 빈을 만들 때, 이를 감싸는 proxy 빈을 만들어서 등록합니다. (프록시 패턴? 기존 코드의 변경 없이 기능 추가가 가능)

     

    Aspect : 공통 관심 사항으로, 트랜잭션, 로깅 등이 예

    Advice : 해야할 일

    Join Point : 합류지점으로, Advice 적용이 가능한 지점

    Pointcut : 실제로 Advice가 적용되는 지점

     

    728x90

    댓글

Designed by Tistory.