본문 바로가기
Develop/Java

Spring Boot 프로젝트 생성

by 구운밤이다 2020. 5. 22.
728x90
반응형

백엔드 대기업 모집 문서를 보면 거의 대부분 적혀있는 프레임워크 중 대표적인 것이 있죠. 바로 자바 스프링입니다. 저는 Node.js 위주로 공부를 해왔었는데, 스프링이 도대체 뭐길래 이렇게 많이 찾는지, 어떤 차이점이 있고 어떤 장점이 스프링을 사용하게 하는 건지 공부해보려고 합니다.

이제부터 스프링을 공부해 보고자하는 초보 백엔드 개발자로써 제가 따라한 기본 프로젝트를 차근차근 설명해보겠습니다.

Dependency Injection, Inversion of Control

Spring에서 가장 핵심적인 개념으로 DI / IoC 가 있습니다. 스프링은 사용자가 컴포넌트를 관리하지 않고, 프레임워크가 컴포넌트를 관리합니다. 여기서 컴포넌트는 어플리케이션이 실행되게 해주는 코드를 말하고 대표적으로 뷰 컨트롤러 등이 있습니다.

기존에는 라이브러리 등을 명시적으로 관리했지만 DI 어플리케이션은 프레임워크가 컴포넌트를 관리합니다.

Start Spring

위에 자바 스프링 공부라고 해놓기는 했지만 코틀린이라는 언어를 사용할 것입니다. 이제 기초 프로젝트를 따라해봅시다.

https://start.spring.io/

위 사이트에 접속하셔서 기본 스프링 프로젝트를 생성해주세요.

위 화면을 보면 gradle project 옵션, 코틀린, 2.3.0 버전의 스프링 부트를 선택했고, 나머지는 기본 값으로 두었습니다.

선택을 완료하셨다면 Add dependency 를 통해 Spring Web, Mustache, Spring Data JPA, H2 Database, Spring Boot DevTools를 추가해주셔야합니다. 이걸 빼먹고 안했다가 한시간 고생했네요. 다하면 Generate 버튼을 눌러 demo.zip 을 다운받으면 됩니다!

Intellij IDE

IDE로는 자바에 잘 맞는 IntelliJ 를 사용해봅시다. 커뮤니티 버전을 다운로드 해주시면 됩니다. 

저는 이런 옵션을 선택했구요. 다운로드 후 실행해주시면 됩니다!

실행하신 뒤 open project로 아까 다운로드한 demo 압축파일을 풀어 프로젝트로 열어줍니다.

그리고 오른쪽 위에서 빌드를 해준 뒤, run을 하면 localhost:8080에 에러화면이 나오는데 이제 여기에 웹을 간단하게 띄워보겠습니다. 

Kotlin 웹 컨트롤러

프로젝트 트리를 보면 src > main > kotlin > com.example.demo 폴더가 보일텐데 위는 DemoApplication.kt 라는 파일의 모습입니다. 이는 나중에 run 할때 다시 들어오면 되고, com.example.demo 폴더를 우클릭해 new > kotlin file/class 로 HtmlController를 만들어 아래 코드를 작성해주세요.

package com.example.demo

import org.springframework.stereotype.Controller
import org.springframework.ui.Model
import org.springframework.ui.set
import org.springframework.web.bind.annotation.GetMapping

@Controller
class HtmlController {

  @GetMapping("/")
  fun blog(model: Model): String {
    model["title"] = "Blog"
    return "blog"
  }

}

간단하게 이렇게 작성한 뒤에는 이번엔 src > main > resources > templates 폴더에 header.mustache 파일을 만듭니다.

<html>
<head>
  <title>{{title}}</title>
</head>
<body>

header 파일은 위처럼 작성해주세요. 위에 아까 title로 설정해 둔 Blog가 들어갈 겁니다!

  </body>
</html>

이번엔 같은 경로에 footer.mustache 파일을 만들어 위처럼 작성해주세요. 현업에서 이렇게 사용하지는 않겠지만 헤더에 바디태그를 푸터에서 닫아주는 구조입니다.

{{> header}}

<h1>{{title}}</h1>

{{> footer}}

마지막으로는 blog.mustache를 같은 경로에 만들어 위처럼 작성해 줍니다. 이러면 헤더와 푸터 파일을 불러오고 그 사이에 html 내용을 집어넣는 것 같아요.

이제 아까 DemoApplication.kt 파일로 돌아가서 빌드후 main 함수를 run 하고 http://localhost:8080 으로 접속해봅시다. 그러면 위처럼 블로그 h1 태그가 잘 나오는 것을 확인할 수 있습니다!

728x90
반응형

댓글