딩딩크롱 2023. 2. 1. 01:24
728x90

📌 프로젝트 생성

사전 준비물

  • Java 19 설치
  • IDE: IntelliJ 설치

스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성

https://start.spring.io/

  • 프로젝트 선택
    • Project: Gradle - Groovy Project
    • Spring: 3.0.x
    • Language: Java
    • Packaging: Jar
  • Project Metadata
    • groupId: hello
    • artifactId: hello-spring
  • Dependencies: Spring Web, Thymeleaf

Gradle 전체 설정

build.gradle
plugins {
	id 'java'
	id 'org.springframework.boot' version '3.0.2'
	id 'io.spring.dependency-management' version '1.1.0'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '19'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}
  • 동작 확인
    • 기본 메인 클래스 실행
    • 스프링 부트 메인 실행 후 에러페이지로 간단하게 동작 확인 (http://localhost:8080)

http로 8080 포트가 뭔가 뜬 것이다
성공!!

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

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

다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠르다.

  • File ➔ Settings ➔ Build, Execution, Deployment ➔ Build Tools ➔ Gradle
    • Build and run using: Gradle ➔ IntelliJ IDEA
    • Run tests using: Gradle ➔ IntelliJ IDEA

설정 이미지

📂 IntelliJ JDK 설치 확인

  • 프로젝트 JDK 설정
  • Gradle JDK 설정

 

📌 라이브러리 살펴보기

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

스프링 부트 라이브러리

  • spring-boot-starter-web
    • sprint-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: 스프링 통합 테스트 지원

 

📌 View 환경설정

📂 Welcome Page 만들기

resources/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>

📂 thymeleaf 템플릿 엔진

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }
}

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>

thymeleaf 템플릿엔진 동작 확인

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

동작 환경 그림

  • 컨트롤러에서 리턴값으로 문자를 반환하면 뷰 리졸버(ViewResolver)가 화면을 찾아서 처리한다.
    • 스프링 부트 템플릿엔진 기본 viewName 매핑
    • resources:templates/+{ViewName}+.html
참고: spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.
IntelliJ 컴파일 방법: 메뉴 build ➔ Recompile

 

📌 빌드하고 실행하기

명령 프롬프트(cmd)로 이동

cd C:\study\hello-spring

gradlew build

cd build/libs

java -jar hello-spring-0.0.1-SNAPSHOT.jar

 

728x90