스프링부트 기반으로 샘플 컨트롤러를 만들어 호출하는 것까지 해보겠습니다.
build.gradle
수정하기최상위에 존재하는 build.gradle.kts
파일을 아래와 같이 수정합니다.
(구현하는 방법에는 여러 방법이 존재할 수 있으니 아래 방법이 꼭 유일한 정답은 아닙니다.)
import com.linecorp.support.project.multi.recipe.configureByLabels
plugins {
id("io.spring.dependency-management") version "1.0.11.RELEASE" apply false
id("org.springframework.boot") version "2.7.3" apply false
id("io.freefair.lombok") version "6.4.1" apply false
id("com.linecorp.build-recipe-plugin") version "1.1.1"
kotlin("jvm") version "1.6.21" apply false
kotlin("kapt") version "1.6.21" apply false
kotlin("plugin.spring") version "1.6.21" apply false
}
allprojects {
group = "sample.project.kdohyeon"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
maven {
url = uri("https://maven.restlet.com")
}
maven {
url = uri("https://jitpack.io")
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.jvmTarget = "17"
kotlinOptions.freeCompilerArgs = listOf(
"-Xjsr305=strict",
"-Xjvm-default=all",
)
}
}
subprojects {
apply(plugin = "idea")
}
configureByLabels("java") {
apply(plugin = "org.gradle.java")
apply(plugin = "io.spring.dependency-management")
apply(plugin = "io.freefair.lombok")
the<io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension>().apply {
imports {
mavenBom("org.springframework.boot:spring-boot-dependencies:2.7.3")
mavenBom("org.jetbrains.kotlin:kotlin-bom:1.6.21")
mavenBom("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.4.1")
mavenBom("com.google.guava:guava-bom:31.1-jre")
}
dependencies {
dependency("org.apache.commons:commons-lang3:3.12.0")
dependency("org.apache.commons:commons-collections4:4.4")
dependency("commons-io:commons-io:2.11.0")
}
}
repositories {
mavenCentral()
maven {
url = uri("https://maven.restlet.com")
}
maven {
url = uri("https://jitpack.io")
}
}
dependencies {
val implementation by configurations
implementation("org.apache.commons:commons-lang3")
implementation("org.apache.commons:commons-collections4")
implementation("commons-io:commons-io")
implementation("com.google.guava:guava")
}
}
configureByLabels("boot") {
apply(plugin = "org.springframework.boot")
tasks.getByName<Jar>("jar") {
enabled = false
}
tasks.getByName<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
enabled = true
}
}
gradle.properties
수정하기label=java,boot
build.gradle
수정하기아래 그림처럼 apps:app-api
모듈 아래에 존재하는 build.gradle
파일을 수정합니다.
import org.springframework.boot.gradle.tasks.bundling.BootJar
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
}
val appMainClassName = "sample.project.kdohyeon.SampleProjectApplicationKt"
tasks.getByName<BootJar>("bootJar") {
mainClass.set(appMainClassName)
}
SpringBootApplication
생성하기먼저 package 를 생성합니다. 경로는 sample.project.kdohyeon
로 지정했습니다.
아래 그림처럼 xxxApplication.kt
파일을 생성합니다. SampleProjectApplication.kt
로 이름을 만들어보았습니다. 해당 파일을 통해 스프링 어플리케이션을 실행시킬 수 있습니다.
내부 코드는 다음과 같습니다.
kotlin
package sample.project.kdohyeon
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class SampleProjectApplication
fun main(args: Array<String>) {
runApplication<SampleProjectApplication>(*args)
}
java
package sample.project.kdohyeon;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SampleProjectApplication {
public static void main(String[] args) {
SpringApplication.run(SampleProjectApplication.class, args);
}
}
GET 형식의 API 를 만들어보겠습니다.
controller
패키지를 생성하고 아래 SampleController
클래스를 생성합니다.
내부 코드는 다음과 같습니다.
package sample.project.kdohyeon.controller
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class SampleController {
@GetMapping("/api/v1/sample")
fun sample(): String {
return "hello world"
}
}
IntelliJ 오른쪽 상단에 있는 어플리케이션 실행하기 버튼을 클릭하여 실행합니다.
성공적으로 실행이 되면 아래와 같은 콘솔 화면을 확인할 수 있습니다.
브라우저에서 해당 API 를 호출해보면 다음과 같이 잘 실행됨을 볼 수 있습니다.
참고 자료: