2 분 소요


1. 프로젝트 생성

1.1 스프링 부트 스타터

스프링 프로젝트를 만들기 위해 스프링 부트 스타터 사이트로 이동하자 https://start.spring.io/


아래와 같이 설정해준 후 ADD DEPENDENCIES 클릭하고 Thymeleaf, Spring Web 선택하기!


다음으로, GENERATE 클릭해서 다운로드 받자


그 후, 생성한 프로젝트에 있는 build.gradle를 열어주면 된다.


1.2 IntelliJ JDK 설치 확인

프로젝트를 오픈하니, “잘못된 Gradle JVM 구성을 발견했습니다. JDK 22.0.1이(가) Gradle 8.8와(과) 호환되지 않습니다. JAVA_HOME 환경 변수를 수정하세요.” 라는 오류가 발생했다.


ⓛ 프로젝트 JDK 설정 확인

IntelliJ 설정 (Ctrl + Alt + S) > 빌드, 실행, 배포 > Gradle > Gradle JVM Java version 을 17 버전 이상으로 지정


② Gradle JDK 설정 확인

프로젝트 설정(Ctrl + Alt + Shift + S) > 프로젝트 > JDK 17 버전 이상으로 지정


1.3 프로젝트 실행하기

아래 main > java에 있는 프로젝트 실행하기


http://localhost:8080에 접속하고 아래와 같이 뜨면 성공!


1.4 IntelliJ Gradle 대신에 자바 직접 실행

최근 IntelliJ 버전은 Gradle을 통해서 실행 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다.

빠른 실행을 위해서 IntelliJ 설정(Ctrl + Alt + S) > 빌드, 실행, 배포 > Gradle > Intellij IDEA로 수정하자.



2. 라이브러리

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


2.1 스프링 부트 라이브러리

  • 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

2.2 테스트 라이브러리

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



3. View 환경설정

3.1 Welcome Page 만들기

스프링부트는 src > resources > static > index.html 에 있는 페이지를 첫 화면으로 렌더링한다.

static > 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>

서버를 껐다 키면 렌더링 완료!



java > 생성한 project 이름 우클릭 후 패키지 생성(ex.controller) > 생성한 패키지에 Java 클래스 클릭하여 컨트롤러 생성(ex.HelloController)

그 후, 생성한 HelloController에 아래와 같이 코드 작성

package hello.hello_project.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";
    }
}


그 후, templates > hello.html을 생성하고 아래 코드를 입력하기

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>


  • 또한 HelloController에서 model.addAttribute의 value가 위 코드의 ${data}로 치환이 되게 된다.


thymeleaf 템플릿엔진 동작 확인

실행: http://localhost:8080/hello


  • 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버(viewResolver)가 화면을 찾아서 처리한다.
    • 스프링 부트 템플릿엔진 기본 viewName 매핑
    • resources:templates/ +{ViewName}+ .html
    • 즉, 위 코드의 retrun은 resources/templates/hello.html을 찾게 되고 렌더링을 하게 된다.


  • 참고
    • pring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작없이 View 파일 변경이 가능하다.
    • 인텔리J 컴파일 방법: 메뉴 build -> Recompile



4. 빌드하고 실행하기(windows)

① 프로젝트 폴더로 이동해서 cmd 창 열기


./gradlew build로 빌드하기


cd build/libs로 이동하기
hello-project-0.0.1-SNAPSHOT.jar 파일을 확인할 수 있다.


④ jar 파일을 실행시키기

java -jar hello-project-0.0.1-SNAPSHOT.jar


⑤ 실행 완료!


카테고리:

업데이트:

댓글남기기