본문 바로가기
프로그래밍/스프링프레임워크

Spring Boot + Kotlin + Thymeleaf 프로젝트 만들기

by pentode 2019. 8. 19.

이때까지 스프링 프레임워크를 사용한 웹 애플리케이션을 개발하는데 항상 xml설정 방식과 Java, JSP를 사용해 왔었습니다. 스프링 프레임워크에 대해서 계속 공부하던 중 Spring Boot, Kotlin, Thymeleaf등에 대해서 알게 되었고, 이것들을 조합하여 사용하는 것을 테스트해 보기로 마음 먹었습니다.


먼저 테스트를 위한 프로젝트를 생성해 보겠습니다. 사용된 개발툴은 다음과 같습니다.


- JDK 1.8(Java 8)

  이미 12버전까지 나와 있지만 못따라 가겠네요.T.T


- Eclipse IDE 1918-12

  Photon이후로 Eclipse의 명명방식이 년월을 붙이는 방식으로 바꼈네요.


- Spring Tools 4

  Eclipse 플러그인으로 사용하고 있습니다. Spring Boot 프로젝트를 생성하는 템플릿을 쉽게 사용할 수 있습니다.


- Kotlin Plugin for Eclipse 0.8.17

  이클립스를 위한 코틀린 플러그인 입니다.



1. 프로젝트 위자드를 열어서 "Spring Starter Project"를 선택합니다.




2. 언어설정을 Kotlin으로 합니다.




- Type : Maven

  익숙한 메이블을 사용합니다. Gradel도 배워야 할까요.T.T


- Packging : War

  다른 서버에 배포하려면 War로 하는게 맞을 것 같습니다.


- Java Version : 8

  Java 8이 JDK 1.8 입니다.


- 나머지 정보는 위의 이미지 처럼 적당히 했습니다. 테스트니까요.



3. 스프링 부트 설정입니다.




- Spring Boot Version : 2.2.0 M5

  일단 선택할 수 있는 최신 버전을 선택했습니다.


- Spring Boot DevTools

  소스 수정시 자동으로 재시작 등 개발을 도와 주는 설정 입니다.


- Spring Boot Web Starter

  웹 애플리케이션 개발을 위한 설정입니다.


- Thymeleaf

  Thymeleaf 템플릿 엔진을 사용하도록 설정합니다.



4. 프로젝트 폴더 구조




몇가지 파일이 미리 생성되어 있습니다.


- ServletInitializer.kt

  스프링 프레임워크 Java Config를 위한 WebApplicationInitializer를 구현하고 있는 클래스로

프로젝트 생성시 Packging을 War로 설정하면 생성됩니다. 다른 웹서버에 배포했을때

Spring Boot를 시작하는 파일을을 로드해 줍니다.


- SpringbootKotlinThymeleafApplication.kt

  스프링 부트 애플리케이션으로 실행 시켜주는 Entry Point입니다.


- application.properties

  스프링 부트 설정 파일 입니다. 스프링 프레임워크 설정시 xml 또는 Java config로 하던것을 여기에서 합니다.



5. 테스트용 컨트롤러를 만들어 봅니다.


- com.tistory.offbyone.example.web 패키지를 만듭니다.

- WelecomeController.kt 파일을 만듭니다.


package com.tistory.offbyone.example.web


import org.springframework.stereotype.Controller

import org.springframework.web.bind.annotation.GetMapping

import org.springframework.ui.Model


@Controller

class WelcomeController {

    @GetMapping("/welcome")

    fun welcome(model: Model):String {

        model.addAttribute("greeting", "Hello Thymeleaf!")

        return "welcome"

    }

}



6. 뷰 템플릿을 생성합니다.


- welcome.html

  src/main/resources/templates 폴더 아래에 생성합니다.


<!DOCTYPE html>

<html xmlns:th="http://www.thymeleaf.org">

<head>

<meta charset="utf-8" />

<title>Welcome!</title>

</head>

<body>

<h1 th:text="${greeting}">Greeting!</h1>

</body>

</html>


7. 프로젝트를 실행합니다.


- 프로젝트에 마우스 오른쪽키를 누르고 Run As -> Spring Boot App을 실행합니다.


- 다음 에러가 발생합니다.

  org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 

  Configuration problem: @Configuration class 'SpringbootKotlinThymeleafApplication' may not be final.

  Remove the final modifier to continue.


- 코틀린 클래스는 기본적으로 final 입니다. open으로 선언합니다.

  @SpringBootApplication

  open class SpringbootKotlinThymeleafApplication




웹 애플리케이션이 실행되었습니다. Console을 보면 Tomcat 9.0.22가 사용되었고, 8080 포트로 서비스가 되고 있다는 것을 알 수 있습니다.



8. 웹 브라우저로 접속해 봅니다.


- http://localhost:8080/welcome 로 접속합니다.




템플릿내의 <h1> 태그 안의 Greeting! 문자열이 컨트롤러에서 보낸 "Hello Thymeleaf!"로 바뀐것을 알 수 있습니다.


이렇게 해서 Spring Boot + Kotlin + Thymeleaf 테스트 개발 환경을 만들었습니다. 앞으로는 먼저 Thymeleaf 템플릿 엔진에 대해서 먼저 알아 보겠습니다.

반응형