[프로젝트 셋업] 스프링부트 적용하기

김대니·2022년 11월 19일
0

스프링부트 기반으로 샘플 컨트롤러를 만들어 호출하는 것까지 해보겠습니다.

최상위 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
    }
}

apps:app-api 의 gradle.properties 수정하기

label=java,boot

apps:app-api 의 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);
    }
}

Sample API 생성하기

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 를 호출해보면 다음과 같이 잘 실행됨을 볼 수 있습니다.

참고 자료:

profile
?=!, 물음표를 느낌표로

0개의 댓글