본문 바로가기
Framework/Spring

[SpringBoot-스프링 입문] 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 1. 프로젝트 환경설정

by DevBridge 2024. 12. 25.
본 게시글은 김영한님의 인프런(Inflean)강의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 수강하고 공부한 내용을 정리한 글입니다.

1. 프로젝트 생성

1-1. IntelliJ IDE 다운로드 및 자바 설치

  • 스프링부트가 3.0.x 버전으로 업그레이드 되면서 최소 버전으로 Java 17이 필요하다.
IntelliJ IDE 다운로드: https://www.jetbrains.com/ko-kr/idea/
JDK-17 다운로드: https://www.oracle.com/kr/java/technologies/downloads/

1-2. https://start.spring.io를 사용하여 프로젝트 생성

스프링 부트 스타터 사이트를 사용해 스프링 프로젝트를 생성한다.


1-3. 스프링 부트(Spring Boot) 버전

Maven과 Gradle은 필요한 라이브러리를 땡겨와서 빌드하는 라이프 사이클까지 관리해주는 Tool이다.

주로 Gradle을 이용하여 개발하는 추세이다. 그 이유는, builde.gradle이라는 빌드 파일을 만들기 때문에 가독성이 좋고, 스크립트를 통해 여러가지 상황에 적합한 빌드를 만들어 낼 수 있어 유연하기 때문이다.

추가적으로, Gradle은 빌드 과정에서 병렬처리와 캐싱을 활용해 Maven보다 10배~100배까지 향상된 성능을 구현할 수 있다.

Project Metadata

  • Group - 기업 도메인주소를 작성하는 람
  • Artifact - build 후 프로젝트 결과물. Artifact를 수정하면 Name과 Package name이 자동으로 조정된다.

Dependencies

프로젝트를 진행할 때 자신이 필요한 라이브러리를 ADD DEPENDENCIES를 클릭하여 추가할 수 있다.

  • Spring Web
  • Thymeleaf: HTML을 만들어주는 템플릿 엔진. 종류 다양함

Generate를 누르면 hellospinrg.zip파일 생성.

글쓴이의 IDE는 IntelliJ를 사용할 것이다. IntelliJ를 실행하여 프로젝트의 압축을 푼 디렉토리를 찾아 build.gradle 파일을 선택하여 프로젝트를 연다. 


2. 라이브러리 살펴보기

Gradle은 의존관계가 있는 라이브러리를 함께 다운로드해 가져온다. 이때 중복된 라이브러리는 (*) 표식으로 대체한다.
현업에서는 System.out.println 등의 출력문을 사용하지 않고 Logging을 사용해 시스템을 관리한다. 이점으로는 유연성관리 용이성, 성능, 로그 관리, 확장성 등이 있다.
  • spring-boot-starter-web
    • spring-boot-starter-tomcat: 톰캣(웹서버)
    • spring-webmvc: 스프링 웹 MVC
  • spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
  • spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
    • spring-boot
      • spring-core
    • spring-boot-starter-logging
      • logback, slf4j
  • spring-boot-starter-test
    • junit: 테스트 프레임워크
    • mockito: 목 라이브러리
    • assertj: 테스트 코드를 보다 편리하게 작성할 수 있도록 도와주는 라이브러리
    • spring-test: 스프링 통합 테스트 지원

3. View 환경설정

3-1. Welcome Page 생성

스프링부트(Spring Boot)는 정적인 또는 템플릿에 기반한 Welcome Page를 모두 지원한다. 실행 시 사전에 설정된 정적 요소 위치로 가 index.html 파일을 탐색한 후, 조회된 것이 없으면 그 다음으로 템플릿 형식의 index를 찾는다.
  • 정적 요소 위치인 resources:static/ 폴더 하위에 index.html을 만들어두면 Welcome Page 기능을 한다.

3-2. Thymeleaf 템플릿 엔진

스프링부트는 프리마커(Freemarker), 그루비(Groovy), 타임리프(Thymeleaf), 머스타시(Mustache)와 같은 템플릿 엔진 관련 자동 설정 기능이 내재되어있다.

3-3. 뷰 리졸버(View Resolver)를 통한 화면 동작 원리

  • 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰리졸버 viewResolver 가 화면을 찾아서 처리
    • 스프링 부트(Spring Boot) 템플릿 엔진 기본 view name으로 매핑이 이뤄진다.
    • resource:templates/ + { view name } + .html