티스토리 뷰
스프링 프레임워크(Spring Framework) - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
장점 - 경량 컨테이너, IoC(Invertion of Control 제어역행)
DI(Dependency Injection 의존성 주입), AOP(Aspect-Oriented Programming 관점 지향 프로그래밍)
스프링 부트(Spring Boot) - 스프링 프레임워크 기반의 애플리케이션 ( 경량화, 더 잘 사용할 수 있는 스프링 )
장점 - Dependency의 관리가 쉽다.
Embedded server - Tomcat이 내장되어 서버 구동 시간이 짧다. 내장 서블릿 컨테이너로 Jar 파일로 간단 배포가 가능
라이브러리
Gradle은 의존 관계가 있는 라이브러리들을 함께 다운로드해준다.
IntelliJ기준 Gradle - 프로젝트명 - Dependencies 에서 확인 가능
기본 동작 - 스프링 부트에서는 welcome page 기능을 제공 ( static/index.htm을 제공 )
템플릿 엔진 - 지정된 템플릿 양식과 데이터가 합쳐져서 HTML 문서를 출력하는 소프트웨어
서버 사이드 템플릿 엔진 - HTML 코드에서 고정적인 부분을 템플릿으로 만들고, 동적으로 생성되는 부분을 코드에 포함시킨다.
JSP, Thymeleaf, Freemarker.. 등
클라이언트 사이드 템플릿 엔진 - HTML 코드 형태, 데이터를 받아 동적으로 DOM 객체를 생성한다.
Mustache .. 등
스프링 부트의 기본 동작
클라이언트에서 /hello 요청 -> helloController의 @GetMapping("hello")를 통해 생성자 호출 후 return
-> 리턴 값으로 문자를 반환하면 ViewResolver가 화면을 찾아서 매핑한다. (resources : templates/ + 리턴된 문자 + .html)
스프링 웹 개발 기초
정적 컨텐츠 - 작성한 웹 페이지를 그대로 내보내준다.
내장 톰캣 서버에서 관련 컨트롤러가 없다면 resources:static/이름.html을 반환해준다.
MVC와 템플릿 엔진
MVC - Model, View, Controller
Model - 객체가 포함해야 할 데이터가 무엇인지 정의(비즈니스 로직 처리)
View - 사용자에게 보여질 페이지를 정의
Controller - 사용자의 요구사항을 파악하여 Model에 접근하고, 반영한 데이터를 View를 통해 사용자에게 전달
사용하는 이유 - 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행한다.
API(Application Programming Interface)
객체나 문자를 JSON 형태로 화면에 전달한다.
템플릿 엔진과의 차이는 HTML 태그의 사용 여부 (API는 값만 반환을 한다.)
@GetMapping의 결과가 @ResponseBody로 연결될 경우 HttpMessageConverter가 형태에 따라 분류한다.
반환 타입이 객체일 경우 - JsonConverter를 통해 JSON 형태로 값을 반환
반환 타입이 문자일 경우 - StringConverter를 통해 문자열 형태로 값을 반환
본 포스팅은 인프런 강의 중 김영한님의
[ 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 을 수강하며 작성한 내용입니다.