Kotlin + Spring Boot 2.1.0 + Thymeleaf + IntelliJ IDEA + Gradle에서 Hello World
개요
IntelliJ IDEA에서 Kotlin + Spring Boot 2.1.0 + Thymeleaf를 사용하여 Hello World를 표시하는 프로그램을 작성합니다.
환경
Spring Initializr로 프로젝트의 병아리 생성
Spring Initializr 에서 다음 내용을 지정하여 "Generate Project"한다.
프로젝트의 zip 파일을 다운로드할 수 있다.
프로젝트 파일
다운로드한 zip 파일을 확장합니다.
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── kotlin
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ └── DemoApplication.kt
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── kotlin
└── com
└── example
└── demo
└── DemoApplicationTests.kt
빌드 파일 build.gradle
이번에는 Kotlin 1.3.0을 사용하고 있기 때문에 kotlinVersion = '1.3.0'으로 다시 작성해도 좋지만 수정하지 않아도 좋다.
buildscript {
ext {
kotlinVersion = '1.2.70'
springBootVersion = '2.1.0.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
}
}
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
compileKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
repositories {
mavenCentral()
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-thymeleaf')
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
애플리케이션 클래스 DemoApplication.kt
특히 아무것도 수정하지 않습니다.
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}
IntelliJ IDEA로 프로젝트 만들기
IntelliJ IDEA에서 Import Project에서 build.gradle을 지정합니다.
Use auto-import 를 체크하고 임포트.
병아리 프로그램 실행
IntelliJ IDEA 메뉴에서 View → Tool Windows → Gradle에서 Gradle 창을 엽니 다.
Gradle 창에서 Tasks → application → bootRun을 마우스 오른쪽 버튼으로 클릭하고 Run 'demo [bootRun]'을 선택하여 실행합니다.
실행하면 Run 창에 다음과 같은 Spring Boot 메시지가 표시됩니다.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.0.RELEASE)
그 후, 「Tomcat started on port(s): 8080 (http) with context path ''」나 「Started DemoApplicationKt」라고 하는 로그가 표시된다.
http://localhost:8080에 액세스하면 다음과 유사한 메시지가 표시됩니다. 서버가 기동하고 있지만, 프로그램의 내용이 없는 상태가 되어 있다.
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Hello World 코드 추가
두 개의 HelloController.kt 파일과 hello_name.html 파일을 추가하여 Hello World를 구현합니다.
Controller 클래스 추가
다음 HelloController 클래스를 src/main/kotlin/com/example/demo/HelloController.kt에 추가합니다.
package com.example.demo
import org.springframework.stereotype.Controller
import org.springframework.ui.Model
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.ResponseBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestMethod
@Controller
class HelloController {
@RequestMapping(value = ["/hello"], method = [RequestMethod.GET])
@ResponseBody
fun hello_world(): String {
return "hello, world"
}
@RequestMapping(value = ["/hello/{name}"], method = [RequestMethod.GET])
fun hello_name(@PathVariable name: String, model: Model): String {
model.addAttribute("name", name)
return "hello_name" // Thymeleaf テンプレートファイル名
}
}
Thymeleaf 템플릿 파일 추가
다음 HTML 템플릿 파일을 src/main/resources/templates/hello_name.html에 추가합니다.
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Hello, [[${name}]]</title>
</head>
<body>
<p>Hello, [[${name}]]</p>
</body>
</html>
Hello World 프로그램 실행
다시 프로그램을 실행합니다.
http://localhost:8080/hello에 액세스하면 "hello, world"로 표시됩니다.
http://localhost:8080/hello/hoge에 액세스하면 "Hello, hoge"가 표시됩니다.
URL의 "hoge"부분은 어떤 문자열든지 지정할 수 있다.
참고 자료
Reference
이 문제에 관하여(Kotlin + Spring Boot 2.1.0 + Thymeleaf + IntelliJ IDEA + Gradle에서 Hello World), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/niwasawa/items/fa6baf67dd8a24c3a593텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)