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

Kotlin을 사용하는 Spring Boot 웹 애플리케이션

by pentode 2019. 6. 16.

Spring Boot 웹 애플리케이션을 만드는데, 언어로 Kotlin을 사용하도록 프로젝트를 구성해 봅니다. Kotlin은 안드로이드 앱 개발외에 Spring 프레임웍을 사용하는 웹 애플리케이션 개발에도 사용될 수 있다고 합니다.


프로젝트 생성은 "Spring Boot 웹 프로젝트 만들기"에서 프로젝트 생성하는것을 참조해서 생성하면 되겠습니다. 차이점은 언어를 Java가 아니라 Kotlin 으로 선택하면 되겠습니다.


이 예제도 전자정부표준프레임웍 3.8 개발툴을 사용하고 있습니다. 프로젝트를 생성하면 두 가지 에러가 보입니다.



- 첫 번째 에러는 maven-jar-plugin.version이 맞지 않아서 였습니다. 다음과 같이 프로퍼티를 수정해서 3.1.1 버전으로 오버라이드 합니다.


<properties>

    <java.version>1.8</java.version>

    <kotlin.version>1.2.71</kotlin.version>

    <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>

</properties>



- 두 번째 에러는 아래와 같은 오류입니다.


이클립스 kotlin 플러그인을 설치하니까 오류가 없어졌습니다. Kotlin 플러그인의 설치는 "Eclipse에 Kotlin(코틀린) 플러그인 설치 및 간단한 프로그램 실행해보기" 글을 참조하세요. 설치후 Maven -> Update Project를 실행합니다.


Plugin execution not covered by lifecycle configuration:

org.jetbrains.kotlin:kotlin-maven-plugin:1.2.71:test-compile

(execution: test-compile, phase: test-compile)



- tomcat으로 웹 애플리케이션 실행을 위해서 다음 의존성을 추가합니다.


<dependency>

    <groupId>org.apache.tomcat.embed</groupId>

    <artifactId>tomcat-embed-jasper</artifactId>

    <scope>provided</scope>

</dependency>



- Kotlin소스를 위한 폴더를 변경합니다.


프로젝트를 생성하면 kotlin 소스가 Java처럼 package구조와 같은 폴더 구조에 들어 있습니다. Kotlin 컨벤션에 따라 src/main/kotlin 폴더가 com.tistory.offbyone.springboot 패키지의 루트가 되도록 변경합니다.



- src/main/resources/application.properties 파일에 뷰 리졸버를 설정합니다.


spring.mvc.view.prefix=/WEB-INF/jsp/

spring.mvc.view.suffix=.jsp



- 테스트용 컨트롤러를 만듭니다.


package com.tistory.offbyone.springboot.web


import org.springframework.stereotype.Controller

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


@Controller

class WelcomeController {

@GetMapping("/welcome")

fun welcome():String {

return "welcome"

}

}




- 웹용 폴더와 테스트용 welcome.jsp 파일을 만듭니다.


src/main/webapp/WEB-INF/jsp 폴더를 만들고, 그 아래에 welcome.jsp 파일을 만듭니다.




- 실행시 final 클래스 에러 수정하기


SpringBootKotlinApplication.kt 파일에 마우스 오른쪽 키를 누르고 Run As -> Kotlin Application을 선택해서 실행하면 에러가 발생합니다.


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

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

Remove the final modifier to continue.

Offending resource: com.tistory.offbyone.springboot.SpringBootKotlinApplication


Kotlin클래스는 기본값이 final 이기 때문에 클래스 선언 앞에 open 을 붙여줘야 합니다.


@SpringBootApplication

open class SpringBootKotlinApplication



- 실행하기


이제 Run As -> Kotlin Application를 선택해서 잘 실행이 되었습니다.




- 웹 페이지 호출하기


http://localhost:8080/welcome를 호출해서 실행해 봅니다.




Kotlin을 사용한 Spring Boot 웹애플리케이션을 만들어 봤습니다. 하지만 어느정도 쓸만한 애플리케이션을 만들어 보기 위해서는 아직도 갈길이 먼것 같습니다.


전체예제소스: spring-boot-kotlin.zip

반응형