Spring/개념
[Spring] IoC, DIP, DI, 스프링 컨테이너, 스프링 빈(Bean)이란?
IoC(Inversion of Control, 제어의 역전)란? 흔히 IoC는 제어의 역전이라는 뜻으로 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 말한다. 맞는 말이긴하지만 좀 더? 직관적으로 풀어서 작성해보면 아래와 같을 것이다. don’t call me, I’ll call you. - Hollywood principle 개인적으로 IoC 를 가장 직관적으로 잘 설명한 문장이라고 생각한다. 좀 더 개발 친화적인 용어로 풀어서 설명하면 다음과 같이 표현할 수 있다. IoC 란 코드의 흐름을 제어하는 주체가 바뀌는 것이다. 코드의 흐름을 제어한다는 것은 여러 행위를 포함한다. 오브젝트를 생성하는 것, 오브젝트의 생명주기를 관리하는 것, 메소드를 수행하는 것 등. 그리고 일반적..
[Spring] Dispatcher-Servlet(디스패처 서블릿)이란? 디스패처 서블릿의 개념과 동작 과정
Dispatcher-Servlet이란? 디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 표현 계층(Presentation layer) 전면에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 중앙집중식으로 처리되는 프론트 컨트롤러(Front Controller)라고 정의할 수 있다. ※ 참고 OSI 7 계층 : 어플리케이션 -> 표현 -> 세션 -> 전송 -> 네트워크 -> 데이터링크 -> 물리 TCP/IP 계층 : 어플리케이션 -> 전송 -> 인터넷 -> 네트워크 엑세스(데이터링크+물리) DispatcherServlet은 Spring MVC의 핵심 요소이다. 클라이언트로부터 어떠한 요청이 오..
[Spring] Spring MVC Framework란? Spring MVC 구조, DispatcherServlet, 핸들러 매핑, 핸들러 어댑터
Spring MVC Framework란? MVC는 Model-View-Controller의 약자로 하나의 디자인 패턴을 뜻한다. Spring MVC에 대해 이해하려면 Model, View, Controller에 대한 이해가 필수이니 해당 내용에 대해 잘 모른다면 다음을 참고하자. [Spring] MVC 패턴이란? MVC 패턴의 등장 배경 하나의 서블릿 혹은 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리한다면, 너무 많은 역할을 하게 되어 유지보수가 어렵다. 또한, UI를 일부 수정하는 일과 비즈니스 s-y-130.tistory.com Spring MVC Framework는 웹 애플리케이션을 빌드하기 위한 프레임워크이다. 다른 MVC Framework 들도 웹 어플리케이션을 빌드할 수 있다. 하지만..
[Spring] 프론트 컨트롤러(Front Controller) 패턴
프론트 컨트롤러란? 서블릿 하나로 클라이언트의 요청을 다 받아서 공통 처리를 중복없이 하기 위해 사용된다. 이후 나머지 컨트롤러들은 서블릿이 사용하지 않는다. 프론트 컨트롤러가 요청을 받고 응답하기 때문이다. 즉, 프론트 컨트롤러가 받아서 다른 컨트롤러를 사용하기 때문이다. 스프링도 DispatcherServlet이 FrontController이다. 기존의 패턴을 설명하자면 아래 그림과 같다 각 클라이언트들은 Controller A, B, C에 대해 각각 호출한다. 공통 코드들은 별도로 처리되어 있지 않고 각 Controller에 포함되어 있다. 하지만 프론트 컨트롤러 패턴을 도입한다면? 각 클라이언트들은 Front Controller에 요청을 보내고, Front Controller은 각 요청에 맞는 컨..
[Spring] 서블릿(Servlet)이란? 서블릿 컨테이너란?
서블릿(Servlet)이란? 자바 서블릿(Java Servlet)은 웹페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. -위키피디아- 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 기존에 서버는 정적인 자료(HTML, 사진, 글 등)만을 주고받았다. 하지만 웹에 다양한 기능이 요구되면서 정적인 자료뿐만 아니라 사용자 요구에 맞춘 동적인 페이지들을 만들 필요가 생겼다. 이를 위해 만들어진 것이 바로 서블릿(Servlet)이다. 쉽게 말해 서블릿은 클라이언트의 요청에 맞춰 동적인 결과를 만들어 주는 자바 웹 프로그래밍 기술이라고 할 수 있다. 이러한 서블릿은 WAS(Web Application S..
[Spring] MVC 패턴이란?
MVC 패턴의 등장 배경 하나의 서블릿 혹은 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리한다면, 너무 많은 역할을 하게 되어 유지보수가 어렵다. 또한, UI를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 변경 시점이 다를 가능성이 매우 높다. 따라서 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. 특히, JSP 같은 뷰 템플릿은 화면을 렌더링 하는데 최적화 되어 있기 때문에 이 부분의 업무만 담당하는 것이 좋다. MVC 패턴을 사용하면 JSP나 서블릿으로 처리하던 것을 컨트롤러, 모델, 뷰라는 영역으로 서로 역할을 나눠 처리할 수 있다. 참고 : https://s-y-130.tistory.com/113 [Spring] 서블릿(Servlet)이란? 서..
[Spring] POJO 와 Spring 프레임워크의 관계
스프링의 본질은 엔터프라이즈 서비스 기능을 POJO에 제공하는 것이다 - Professional Spring Framework, 2005 EJB와 POJO 프로그래밍 POJO의 등장 EJB(Enterprise Java Bean)란 엔터프라이즈 개발을 단순화하기 위해 Sun 사에서 만들어낸 Java 스펙이다. 스프링이 등장하기 이전에는 EJB가 자바 엔터프라이즈 애플리케이션 개발 시장을 독점하고 있었다. 하지만 EJB에는 치명적인 단점이 있었는데, 바로 코드들이 EJB 기술에 지나치게 종속되어야 한다는 것이다. 아래의 코드는 EJB 기반으로 작성된 것으로, 특정 서비스 계층에 EJB라는 기술이 마구 침투하는 모습을 확인할 수 있다. import 선언문부터 implenets, 인스턴스 변수까지 코드가 EJB..