백엔드/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

섹션2. 프로젝트 환경설정

dlng23 2024. 11. 9. 03:47

프로젝트 생성

사전준비물

  • Java 설치
  • IDE: IntelliJ 또는 Eclipse 설치

https://start.spring.io/ 스프링 부트 스타터 사이트를 이용해 스프링 프로젝트 생성

 

해당 사이트에서 아래 사진과 같이 설정한 후, GENERATE 눌러 다운받음

 

Project

Gradle, Maven : 필요한 라이브러리를 가져오고, 빌드하는 라이프 사이클까지 관리해주는 툴

Gradle을 많이 쓰는 추세

 

Spring Boot
SNAPSHOT, M1 이런 것들은 아직 정식 릴리즈 버전X

 

Project Metadata

Group: 보통 기업 도메인명을 주 적음

Artifact: build되어 나올 때의 결과물

 

Dependencies

어떤 라이브러리를 가져올지 결정

 

압축 푼 뒤, IntelliJ에서 build.gradle 파일 → 프로젝트 열기

 

 

동작 확인

스프링 부트 메인 실행 후 에러페이지로 확인 가능 (http://localhost:8080/)

 


단축키 검색

  • 파일 > 설정 > 키맵 에서 단축키 이름 검색

 

IntelliJ Gradle 대신에 자바 직접 실행

  • 파일 > 설정 > 빌드, 실행, 배포 > Gradle 

아래와 같이 Gradle(default)를 IntelliJ로 변경하면 바로 실행해서 실행속도가 더 빠름

 

 

라이브러리 살펴보기

Gradle은 의존관계가 있는 라이브러리를 함께 다운로드

 

스프링 부트 라이브러리

  • spring-boot-starter-web
    • spring-boot-starter-tomcat: 톰캣(웹서버)
    • spring-webmvc: 스프링 웹 MVC
  • spring-boot-starter-thymleaf: 타임리프 템플릿 엔진(view)
  • spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
    • spring-boot
      • spring-core
    • spring-boot-starter-logging
      • logback, slf4j

테스트 라이브러리

  • spring-boot-starter-test
    • junit: 테스트 프레임워크
    • mockito: 목 라이브러리
    • assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    • spring-test: 스프링 통합 테스트 지원

 

 

View 환경설정

Welcome Page 만들기

resources/static/index.html 생성

index.html이 도메인만 누르고 들어왔을 때의 첫 화면(welcome page)이 됨

<!-- index.html -->
<!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>

localhost:8080 Welcome Page

 

 

동적 page 만들기 - thymeleaf 템플릿 엔진

src/main/java/hello.hellospring 폴더에 controller 라는 패키지 생성

controller 패키지 안에 HelloController 라는 java class 생성

//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") //웹 애플리케이션에서 /hello로 들어오면 해당 메서드 호출
    public String hello(Model model){
        model.addAttribute("data", "spring!!"); //attribute의 이름이 data인 곳에 value로 "spring!!"이 들어감
        return "hello";
    }
}

 

resources/templates/hello.html 생성

<!-- 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>
<!-- HelloController의 value 값이 data 에 들어감 -->
</body>
</html>

 

localhost:8080/hello

 

동작 원리

spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해도 서버 재시작 없이 View 파일 변경 가능

 

 

빌드하고 실행하기

  1. 콘솔로 이동
  2. ./gradlew build
  3. cd build/libs
  4. java -jar hello-spring-0.0.1-SNAPSHOT.jar
  5. 실행확인

windows

  1. 콘솔로 이동 → 명령 프롬프트(cmd)로 이동
  2. ./gradlew → gradlew.bat 실행
  3. cmd에서 gradlew.bat를 실행하려면 gradlew하고 엔터
  4. gradlew build
  5. 폴더 목록 확인 ls→dir
  6. java -jar hello-spring-0.0.1-SNAPSHOT.jar
  7. 실행확인