본문 바로가기

강의/토비의 스프링부트

(13)
di 적용 dispatcherservlet은 servlet container인 application context를 생성자로 받았음 그걸 이용해서 dispatcher servlet은 bean을 다 훑어 보고 url mapping 정보를 살펴봄. getMapping이나 requestMapping annotation 정보가 존재하면 이것은 web 요청을 처리할 수 있도록 만들어진 web controller구나 라고 인식을 하고 그 안에 요청 정보를 추출한다. mapping 테이블을 만들어서 관리하고 이후에 웹요청이 들어오면 mapping 테이블을 확인하고 메서드를 연결해준다. package com.example.tobyboot; import com.example.tobyboot.toby.HelloController; ..
Dependency injection HelloController가 소스코드 레벨에서는 특정 클래스에 의존하지 않으나 (interface) Runtime이 되면 hellocontroller는 구현체를 이용해야 되기 때문에, 둘사이의 연관관계를 만들어 주긴 해야한다. 이 작업을 DI(Dependency injection)이라고 한다. DI는 제 3의 존재를 필요로 한다. 우리가 이것을 Assembler라고 부른다. HelloController는 HelloService 구현한 클래스에 의존해야하나 소스코드레벨에서는 의존하고 싶지 않다. SimpleHelloService에서 ComplexHelloService로 바꿨다고 해서 소스코드를 고치고 싶지는 않다. Hellocontroller가 사용하는 오브젝트를 new로 만들지 않고 외부에서 그 오브젝..
프론트 컨트롤러 // 스프링 컨테이너 프론트 컨트롤러 servlet이 여러개로 늘어나고 모든 서블릿이 container로 부터 요청을 직접받아 수행하고 return하는 방식으로 코드를 만드니까 대부분 서블릿에서 공통으로 하는 일들도 중복되는 코드로 나타났다. 서블릿은 웹 요청과 응답을 직접적으로 다뤄줘야 하기 때문에 자연스럽지 않다 그래서 서블릿만 가지고 기능을 개발하는데에는 한계가 있다. 이를 개선하기 위한 첫번째 시도는 frontController이다. 원래의 서블릿은 url에 맞게 mapping해서 각기 다른 서블릿이 각기 다른 url을 맡아서 처리하는 방식으로 동작을 해야 했는데 그렇게 하지 말고 모든 서블릿에 공통적으로 등작하는 처리하는 코드를 중앙화된 제일 앞단에 존재하는 컨트롤러라고 이름을 붙이고 공통적인 작업을 처리하고 요청에..
dsf HTTP 요청과 응답 Accept : 모든 컨텐츠 타입을 수용하겠다, html만 받고 싶 스프링부트의 컨테이너리스 servlet container와 관련된 번거롭고 복잡한 지식이나 작업을 요구하지 않고 spring container 에 들어가는 애플리케이션 코드 빈이라고 불리는 component개발에만 집중하고 servlet container와 관련된 설치 배포 관리에 대해 신경쓰지 않도록 구성하는 작업에 대해서 살펴보자 우리의 관심사는 Servlet container를 직접 설치하지 않고 어떻게 동작하게 만들 것이냐 직접 신경쓰지 않도록 할 것이냐가 관건이다. Servlet container를 설치하는 대신 stand alone 프로그램을 만들고 이 servlet container를 띄워주는 작업을 해..
토비의 스프링부트 스프링 부트의 특징 1. 스프링 기반 어플리케이션 2. 실무환경에 필요한 수준 3. 독립 수준 어플리케이션 4. 빠르게 복잡한 없이 부트가 스프링 버전을 결정하지만 스프링과 스프링 부트는 다르다는 것을 인지해야 한다. 스프링 부트의 핵심 목표 1. 매우 빠르고 광범위한 영역의 스프링 개발 경험을 제공 2. 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공하면서, 필요에 따라 원하는 방식으로 손쉽게 변형 가능 (빠르고 기술 고민 없이 개발할 수 있도록 도와줌) 3. 프로젝트에서 필요로 하는 다양한 비기능적인 기술(내장형 서버, 보안, 메트릭, 상태 체크, 외부 설정 방식 등) 제공 4. 코드 생성이나 XML 설정을 필요로 하지 않음. 전통적으로 스프링 웹어플리케이션은 컨테이너 안에 배포를 하고 동작하..