
<스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술>
- 인프런 김영한님 강의 필기
- 개발 환경 - Java 11, IntelliJ
프로젝트 환경 설정
- Spring / Spring Boot
- Spring Initializr로 프로젝트 생성
- IntelliJ
- 프로젝트 구동 확인
- Gradle 라이브러리 살펴보기
- View 환경설정
- Thymeleaf 템플릿 엔진
- 동작 환경 그림
- 프로젝트 파일 구조
- 빌드하고 실행하기
1. Spring / Spring Boot
- Spring: 웹 어플리케이션을 만들 수 있는 자바 기반의 프레임워크
- Spring Boot: 스프링을 더 쉽게 이용하기 위해 이것저것 세팅해주는 도구
2. Spring Initializr로 프로젝트 생성

https://atoz-develop.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0-Spring-Initializr-%EC%9B%B9-%EB%8F%84%EA%B5%AC-%EC%82%AC%EC%9A%A9
+) Spring Initializr - Gradle
- Maven, Gradle은 프로젝트에 필요한 라이브러리를 관리하고 빌드 라이프사이클을 관리해주는 툴
- 최근에는 Maven보다 Gradle을 사용하는 추세
- 스프링 라이브러리 관리 자체도 최근에는 Gradle
+) Spring Initializr - Add Dependencies
- Spring 기반으로 프로젝트를 할때, 어떤 라이브러리를 가져다 쓸지 선택하는 기능
- ex) 웹 프로젝트용 Spring Web, html 만들어주는 템플릿 엔진 Thymeleaf
+) 프로젝트 선택
Project: Gradle Project
Spring Boot: 뒤에 () 붙은거 제외 Up to date
Language: Java
Packaging: Jar
Java: 11
Project Metadata
groupId: hello
artifactId: hello-spring
Dependencies: Spring Web, Thymeleaf
3. IntelliJ

- Java 개발툴(IDE) 3가지 중 하나 (Eclipse, NetBeans, IntelliJ)
//////////////////////////
- 위에서 Generate로 다운로드받은 파일 -> IntelliJ에서 build.gradle 오픈 (open as proj)
- 안에 파일구조 보면, gradle, src 두개로 나뉨
src - main (java, 리소스(java 제외 나머지 html 등) 있음)
src - test (테스트 코드, 요새 중요)
- build.gradle - 예전과 다르게 개발자 편의를 위해 만들어진 설정 파일, plugins, repositories(오픈소스 공유 저장소), dependencies, test 등 적혀있음
(gradle -> 버전 설정하고 라이브러리 땡겨오는 거)
4. 프로젝트 구동 확인
- src - main - java - Application - main 메소드 실행
- 웹 - localhost:8080 검색했을 때 아래면 성공

- main 메소드 실행하지 않았을 때,

5. Gradle 라이브러리 살펴보기
- IntelliJ 좌측 하단 아이콘 누르면 우측에 gradle 탭 나옴


- dependencies - compileClasspath 처음 프로젝트 생성때 추가한 spring web, thymeleaf 라이브러리 있음, 의존성 라이브러리 줄줄이 가져옴
- web 관련 라이브러리 - 내장된 tomcat 웹서버 사용, 즉 프로젝트에 웹서버를 따로 설정하지 않아도 기본적으로 웹서버 사용 가능
- starter 관련 라이브러리 - logging 관련 사용 - logback, slf4j
- testCompileClasspath - test 관련 라이브러리 - junit, mockito, assertj
<정리>
- Gradle은 의존관계가 있는 라이브러리를 함께 다운로드한다
스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat : 톰캣(웹서버)
- spring-webmvc : 스프링 웹 MVC
- spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통) : 스프링부트 + 스프링코어 + 로깅
- spring-boot
- spring-boot-starter-logging
테스트 라이브러리
- spring-boot-starter-test
- junit : 테스트 프레임워크 (핵심)
- mockito : 목 라이브러리
- assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test : 스프링 통합테스트 지원
6. View 환경설정
- 스프링 부트가 제공하는 Welcome Page 기능 확인
- src - main - java - resources - static - index.html 생성 (Welcome Page 설정)
<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
- 다시 run해서 서버 실행시키면, 웹페이지 반영됌

7. Thymeleaf 템플릿 엔진
- 추가한 thymeleaf 템플릿 엔진 동작 확인
- main - java - hello - hellospring - controller 패키지 생성 - HelloController 클래스 생성
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data", "hello!!");
return "hello";
}
}
- main - resources - templates - hello.html 생성
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
- 위 Welcome page에 hello 링크 클릭하면,

- 컨트롤러 맵핑 확인 가능

8. 동작 환경 그림

- 웹브라우저에서 웹서버에 요청 후 응답받는 그림
- 컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리함
- 스프링 부트 템플릿엔진 기본 viewName 매핑
- resources:templates/ +(ViewName)+ .html
+) spring-boot-devtools 라이브러리 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경 가능
+) IntelliJ 컴파일 방법: 메뉴 build → Recompile
+) 라이브러리 추가 방법: https://zangzangs.tistory.com/149
9. 프로젝트 파일 구조

10. 빌드하고 실행하기
- IntelliJ 터미널 - alt + f12
- cd hello-spring/build
- ./gradlew build (빌드)
- cd build/libs
- java -jar .\hello-spring-0.0.1-SNAPSHOT.jar (실행)
- localhost:8080에서 서버실행 확인 가능 (플젝 run하면 8080포트 사용중이라 뜸)
<정리>
- 플젝 build한 다음에 build/libs에 있는 java 실행파일 배포 가능