우선 스프링부트 프로젝트를 먼저 열어야 한다. 튜토리얼에서는 인텔리제이 내에서 몇 가지를 설정하여 열지만, 찾아보니 이는 유료 버전의 인텔리제이가 필요한 작업이다. 따라서 나는 검색을 통해 spring initializr( https://start.spring.io/ )에서 튜토리얼과 같은 설정을 선택하여 프로젝트를 열었다. 해당 사이트에서 알맞은 설정을 선택한 후 압축 파일을 다운받아 압축을 풀어주기만 하면 된다.
이후 단계는 튜토리얼을 따라가기만 하면 된다. 아래 코드는 spring initializr에서 프로젝트를 열면 기본적으로 있는 파일이다. 기본적인 구조는 튜토리얼 내에 설명이 되어있다.
// 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)
}
코틀린 언어 자체에 관한 설명을 제외하고, 스프링으로 처음 접한 부분만 따로 설명을 남겨두려고 한다. 우선 @SpringBootApplication annotation은 스프링부트 애플리케이션 실행 시 진입클래스를 가리키는 어노테이션으로, auto-configuration, component scan 등의 기능을 활성화한다.
main 함수는 함수 내에서 애플리케이션 시작을 위해 runApplication(*args) 함수를 호출하고 있다. runApplication은 매개변수를 vararg 수정자로 표기하여 가변인자를 전달받는다.
다음은 이제 직접 controller를 만들어볼 차례이다. controller는 web request를 처리하기 위해 사용된다. controller에 관한 자세한 설명은 아래 링크를 참조하면 된다.
앞서 소개된 DemoApplication.kt와 같은 package 내에 MessageController.kt 파일을 만들었다.
// MessageController.kt
package com.example.demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestContraller
@RestController
class MessageController {
@GetMapping("/")
fun index(@RequestParam("name") name : String) = "Hello, $name!"
}
위 코드에서 @RestController annotation은 spring에 MessageController class가 rest controller임을 알리기 위해 사용되는데, @RestController는 view를 반환하는 @Controller와는 달리 Json/Xml 형태의 객체 데이터를 반환한다. MessageController 클래스가 DemoApplication 클래스와 동일한 package 내에 있기 때문에 Component Scan에 의해 자동으로 감지된다.
MessageController 클래스 내부의 코드는 @GetMapping 어노테이션 내 "/"으로 요청이 들어오면, "Hello, $name!"을 생성하는 것을 의미한다. @RequestParam 어노테이션은 파라미터 이름으로 바인딩하여 파라미터 사용을 편리하게 하는 역할을 한다. 즉 root 경로에서 애플리케이션에 접근하여 name이라는 요청 파라미터를 제공하면 (ex. /?name=kim) 이 파라미터 값이 index() 함수 호출 시 인수로 사용된다.
마지막으로 애플리케이션을 실행해보는 것으로 첫번째 튜토리얼이 종료되는데, 인텔리제이에서 실행버튼이 활성화 되지 않아
./gradlew bootRun
를 터미널에 입력하여 실행시켜주었다.
'2024-겨울 프로젝트 관련 공부' 카테고리의 다른 글
[Spring Boot] [기본 개념] MVC, DI 공부 (0) | 2025.01.07 |
---|---|
[Spring Boot / Kotlin] 튜토리얼4, Spring Data CrudRepository 활용하기 (0) | 2025.01.07 |
[Spring Boot / Kotlin] 튜토리얼3, data base 추가하기 (0) | 2025.01.06 |
[Spring Boot / Kotlin] 튜토리얼2, data class 추가하기 (0) | 2025.01.04 |
[웹서비스 프로젝트/백엔드] Kotlin 기본 공부 (2) | 2024.12.26 |