https://start.spring.io/
스프링부트 기반으로 스프링 프로젝트를 만들어주는 웹사이트.
Maven, Gradle은
필요한 라이브러리를 가져오고, 빌드하는 라이프 사이클까지 관리해주는 툴이다.
요새는 대부분 Gradle을 사용한다고 한다.
Spring Boot 버전 선택 : SNAPSHOT은 아직 만들고 있는 버전이고, M1은 아직 릴리즈 되지 않은 버전이므로 3.1.4를 선택했다.
Project Metadata
Group : 보통 기업 도메인명으로 함. (나는 연습용이므로 hello로 했다.)
Artifact : 빌드되어 나올 때의 결과물 (프로젝트명)
Dependencies
어떤 라이브러리 땡겨 쓸 건지 정하기!
Spring Web - 웹프로젝트 만들기 위해 사용
Thymeleat - html을 만들어주는 템플릿 엔진
프로젝트 실행 결과
이 화면이 뜨면 성공한 것이다.
external libraries 폴더를 보면 굉장히 많은 라이브러리들이 존재한다.
Maven, Gradle 와 같은 빌드툴들은 의존관계 관리해주기 때문에,
프로젝트 생성시 추가한 라이브러리들과 의존관계 가지는 라이브러리들을 다 땡겨와준다.
소스 라이브러리에서 톰캣 웹서버를 들고있음. (내장형(임베디드형) 웹서버)
따라서 톰캣 서버를 따로 설치할 필요가 없다.
스프링부트 관련된 라이브러리를 쓰면 spring core까지 다 땡겨서 spring과 관련된 것들이 세팅되어 돌아간다.
slf4j - 로깅 관련 인터페이스 라이브러리
junit - 테스트 관련 라이브러리
정리
> Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다.
스프링 부트 라이브러리
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: 스프링 통합 테스트 지원
(스프링부트 관련 문서 찾아보기 위해 https://spring.io/projects/spring-boot 사이트 활용하기)
템플릿 엔진을 쓰면 html 파일을 단순 정적페이지가 아니라, 동작하고 프로그래밍 되는 화면을 만들 수 있다.
웹 애플리케이션에서 첫 진입점이 controller이다.
hello url에 매치되는 get요청에 대해 해당 controller의 메서드 hello가 실행된다. Model은 스프링이 만들어 넣어준다.
return "hello";는 resources/templates/hello.html을 랜더링시키라는 의미이다. (model을 hello.html에 넘기면서)
컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다.
스프링 부트 템플릿엔진 기본 viewName 매핑
resources:templates/ +{ViewName}+ .html
참고: spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이
View 파일 변경이 가능하다.
인텔리J 컴파일 방법: 메뉴 build Recompile