Dispatcher-Servlet란?HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러과거와 비교과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해주어야 했지만, dispatcher-servlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리면서 상당히 편리하게 이용할 수 있게 되었습니다. 우리는 컨트롤러를 구현해두기만 하면 디스패처 서블릿가 알아서 적합한 컨트롤러로 위임을 해주는 구조가 되었습니다.정적 자원 처리1. 정적 자원 요청과 애플리케이션 요청을 분리/apps 의 URL로 접근하면 Dispatcher Servlet이 담당한다./resources 의 URL로 접근하면 Dispatcher Servlet..
Spring MVC란?웹 계층에 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 있는데 이를 스프링 웹 MVC(spring-web-mvc) 또는 스프링 MVC라고 한다.Spring MVC는 클라이언트의 요청을 편리하게 해주는 기능을 제공동작 방식과 구성 요소DispatcherServletDispatcherServlet은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작한다. [CS] Spring Dispatcher-ServletDispatcher-Servlet란?HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러과거와 비교과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해no-delay.tistor..
Spring Framework란?자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크경량급과거 EJB가 느리고 무거운 자바 서버(WAS)에서만 동작한 반면, 스프링은 WAS로부터 독립적인 개발 환경을 구축할 수 있습니다. 가장 단순한 서버환경인 톰캣(Tomcat)이나 제티(Jetty) 위에서도 완벽하게 동작애플리케이션 프레임워크특정 계층이나, 기술, 업무 분야에 국한되지 않고 애츨리케이션의 전 영역을 포괄하는 범용적인 프레임워크 IoC(제어의 역행)코드의 최종 호출을 개발자가 결정하는 것이 아니라 스프링 프레임워크 내부에서 이루어지는 것스프링은 이미 구조가 설계되어 있어, 스프링을 사용하는 개발자는 부품을 만들어 조립하는 형태로 개발합니다. 이는 객체의 의존성을 역전시켜 객체 간..
빈 스코프란?스코프는 빈이 존재할 수 있는 범위를 뜻함종류ScopeDescriptionsingleton(기본값) 스프링 IoC 컨테이너 당 하나의 인스턴스만 사용앱이 구동되는 동안 하나만 사용prototype매번 새로운 빈을 정의해서 사용request(Web)HTTP 라이프사이클마다 한 개의 빈을 사용(웹 요청이 들어오고 나갈 때까지)Web-Aware ApplicationContext에서만 사용 가능session(Web)HTTP 세션마다 하나의 빈을 사용(웹 세션이 생성되고 종료될 때까지)Web-Aware ApplicationContext에서만 사용 가능application(Web)ServeltContext 라이프사이클 동안 한 개의 빈만 사용Web-Aware ApplicationContext에서만 사용..
PSA(Portable Service Abstraction)란?환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조(하나의 추상화로 여러 서비스를 묶어둔 것)특정 클래스가 추상화된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것이 PSA의 기본 개념PSA가 적용된 코드는 개발자의 기존에 작성된 코드를 수정하지 않으면서 확장할 수 있으며, 어느 특정 기술에 특화되어 있지 않음 -> 확장성 높음왜 사용하나요?어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지하여애플리케이션에서 사용하는 기술이 변경되더라도 최소한의 변경만으로 변경된 요구 사항을 반영하기 위해 사용 => PSA를 통해서 애플리케이션의 요구 사항 변경에 유연하게 대처 가능 Spring은 상황..
Interceptor란?org.springframework.web.servlet의 HandlerInterceptor 인터페이스로, 스프링 MVC에서 웹 애플리케이션 내에 특정한 uri 호출을 가로채는 역할을 함특징Dispatcher Servlet이 Controller를 호출하기 전 / 후에 인터셉터가 끼어들어 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공Request, Response 조작 불가능스프링 컨텍스트에서 동작처리 과정디스패처 서블릿이 핸들러 매핑을 통해 컨트롤러를 찾도록 요청하는데, 그 결과로 실행 체인(HandlerExecutionChain)을 돌려줌여기서 1개 이상의 인터셉터가 등록되어 있다면 순차적으로 인터셉터들을 거쳐 컨트롤러가 실행되도록 하고,인터셉터가 없다면 바로 컨트롤러를 ..
DI란?의존성 주입(외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴), 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입하는 방식과정A 객체에서 B, C 객체를 의존할 때, A 객체에서 B, C 객체를 직접 생성하는 것이 아니라 외부(IoC 컨테이너)에서 생성된 객체를 주입인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮춤객체 자체가 코드 상에서 객체 생성에 관여하지 않아도 돼서 객체 사이의 의존도 낮출 수 있음DI(의존성 주입) 3가지 방법1. 생성자 주입@Controllerpublic class PetController{ private final PetService petService; @A..
1. 가비지 컬렉션에 대해 설명해주세요. 가비지컬렉션이란 자바의 메모리 관리 방법 중 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말합니다. 장점: Java 프로세스가 한정된 메모리를 효율적으로 사용할수 있게 도와주며, 개발자가 직접 메모리 관리를 하지 않아도 됨 단점: 제어가 힘들며, 다른 동작이 멈춰(STW) 오버헤드가 발생할 수 있음 동작 방식과 종류 추후 업데이트 예정 2. 객체지향 프로그래밍이 뭔가요? 객체지향 프로그래밍은 데이터와 해당 데이터를 처리하는 메소드를 하나로 묶어서 객체를 만들고, 이러한 객체들이 서로 상호작용하면서 프로그램을 구성하는 것입니다. 특징으로는 캡슐화, 상..