2021-03-29(Mon)

항목

내용

학습 날짜

2021-03-29(월)

학습 시간

11:00~23:00

학습 범위 및 주제

spring

학습 목표

spring을 학습하자!

동료 학습 방법

-

상세 학습 내용

http://start.spring.io 로 프로젝트를 구성해서 import해버리자. 다른건 몰라도 .gitignore 가 깔끔하게 셋팅되는 것이 참 편하다.

Gradle

dependencies에 명시된 라이브러리 뿐만 아니라 해당 라이브러리와 의존하고 있는 모든 라이브러리를 함께 다운로드한다.

스프링부트 핵심 라이브러리

  • spring-boot-start-web

    • spring-boot-starter-tomcat: 톰캣(웹 서버)

      옛날에는 Tomcat WAS를 직접 서버에 설치하고 자바코드를 밀어넣는 식으로 개발했었다. 이제는 라이브러리에 WAS를 직접 포함시켜서 빌드해버린다.

    • sping-webmvc: 스프링 웹 MVC

  • spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)

  • spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅

    • spring-boot

      • spring-core

    • spring-boot-starter-logging

      • logback, slf4f

      실무에서는 로거를 써야한다. spring-boot-starter에 logging 라이브러리가 있는데, slf4jlogback-classic을 엮어서 쓸 수 있도록 의존성 라이브러리로 포함되어있다.

테스트 라이브러리

  • spring-boot-starter-test

    • junit: 테스트 프레임워크

    • mockito: 목 라이브러리

    • asserts: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리

    • spring-test: 스프링 통합 테스트 지원

View에 대해서

Welcom page는 어떻게 생성할까? 스프링 부트는 index.html 을 먼저 찾고, 없으면 index template를 찾는다.

컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다.

  • 스프링 부트 템플릿엔진이 기본 viewName을 매핑

  • resources:templates/ +{ViewName}+ .html

스프링 웹 개발 기초

웹을 개발한다는 것은 크게 3가지를 뜻한다.

  1. 정적 컨텐츠

  2. MVC와 템플릿 엔진

3. API

@ResponseBody 어노테이션으로 컨트롤러 메서드를 감싸면, viewResolver 를 사용하지 않는다. 그리고 메서드 리턴 값이 HttpMessageConverter로 변환되어 응답 바디에 저장된다. 이 때 1) 요청의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보를 조합하여 HttpMessageConverter가 선택된다.

  • 본 문자처리: StringHttpMessageConverter

  • 기본 객체처리: MappingJackson2HttpMessageConverter

학습 내용에 대한 개인적인 총평

흠 재밌긴한데 갈길이 멀다!

다음 학습 계획

  • 디자인패턴 학습

Last updated