본문으로 바로가기

( 강의 수강 후 정리한 내용입니다. 코드로 배우는 스프링 )

 

1. 프로젝트 생성

 

a. Spring Initializer

https://start.spring.io/ 

spring Initializer를 통해 프로젝트를 생성할 수 있다. 

 

 

Project의 빌드 방식과 언어 선택,

Spring Boot  버전을 선택한 후에 Generate를 누르면

Spring Boot 프로젝트가 생성된다. 

 

Dependencies:

  • Spring Boot DevTools
  • Lombok
  • Spring Web 

 

 

생성된 Spring Boot를 IDE를 열면 끝. 

 

 

b. IntelliJ 로 Spring Boot 프로젝트 만들기

마찬가지로

프로젝트 이름, 위치, 언어, 빌드 방식 선택

 

 

 

Next

 

기본적인 Dependency 추가 후 Finish.

 

 

생성된 build.gradle 파일을 확인하면

스프링 부트의 버전과 프로젝트 이름,

 

그리고 프로젝트에 추가된 dependencies를 확인할 수 있다.

plugins {
    id 'org.springframework.boot' version '2.7.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

// 라이브러리 다운로드 할 레퍼지토리
repositories {
    mavenCentral()
}

// starter-web : 톰캣, 스프링 웹 mvc
// spring-boot-starter: 스프링 부트 + 코어 + 로깅
// spring-boot-starter-test: spring-test 스프링 통합 테스트 지원
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

 

 

 

프로젝트를 생성하면

main으로 HelloSpringApplication이 생성됨을 확인 할 수 있다. 

 

SpringBoot은 내장 톰캣을 제공하기 때문에 별다른 서버 설정 없이 바로 실행이 가능하다.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloSpringApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(HelloSpringApplication.class, args);
    }
}

 

 

 

2. Controller 및 View 추가하기

간단한 Controller를 추가해본다. 

 

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

/hello 라는 요청을 받으면 model에 data - hello 값을 갖는 속성을 추가한 후 hello를 리턴한다. 

 

<!DOCTYPE html>
<html xmlns: xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>

templates/hello.html 에 위와 같은 html를 작성했다. (thymeleaf 사용)

 

localhost:8080/hello

 

프로젝트 폴더 구조

 

 

springBoot의 동작 구조

 

웹 브라우저에서 요청이 들어오면 spring은 요청에 맞는 controller을 찾아 맵핑한다. 

Controller은 요청을 받아 로직을 수행하고 결과를 리턴한다. 

 

Controller에서 리턴하면 ViewResolver가 결과에(hello.html) 해당하는 view를 찾아 리턴한다. 

springboot는 기본적으로 name.html을 반환 한다고 한다. 

 

 

 

 

3. Build 하기

위 프로젝트는 IDE 내에서 실행시킨 방법이고

터미널에서 직접 빌드하여 실행시키는 방법

 

./gradlew build
cd build
cd libs
java -jar PROJECT_NAME-0.0.1-SNAPSHOT.jar

 

터미널에 프로젝트 폴더로 이동하여

gradle 명령어로 build 한다.

 

build후에 보면 build폴더가 생성됨을 볼 수 있는데

폴더 내 Libs에 보면 실행 가능한 jar 파일이 생성된 걸 볼 수 있다. 

 

jar 파일은 java -jar jarFileName 으로 실행시킬 수 있다. 

 

실행된 모습

 

실제 서버에 jar 파일을 올리고 실행시키면 spring이 띄워진다.