본문 바로가기

Java/Spring

Spring.io 따라하기: Quickstart

이 문서의 내용

    테스트 환경 및 주요 아젠다

    스프링 프레임워크를 사용하여 고전적인 "Hello World" 앤드포인트를 구현합니다.

    더보기

    이 프로젝트의 개발 환경

    • IDE(Integrated Developer Environment)
      • IntelliJ IDEA
      • 또는 Spring Tools, Visual Studio Code, Eclipse 등으로 대체 할 수 있습니다.
    • JDK(Java Development Kit)

    Step 1: 새로운 스프링 부트 프로젝트 생성

    start.spring.io를 사용하여 웹(Web) 프로젝트를 생성합니다.

    더보기

    Spring initializr(start.spring.io)는 스프링 프로젝트 생성을 위한 웹 도구입니다.

    스프링 버전과 필요 모듈, 의존성 등을 선택하여 스프링 프로젝트를 쉽고 빠르게 시작 할 수 있도록 도와줍니다.

    start.spring.io에서 생성한 프로젝트는 앱 내부에서 스프링을 동작하기 위한 프레임워크 스프링 부트가 포함됩니다.

    스프링 부트는 별도 코드나 환경 설정을 많이 요구하지 않으므로 스프링 프로젝트를 시작하기 위한 가장 빠른 방법 중 하나입니다.

    의존성(Dependencies) 다이얼로그에서 스프링 웹(Spring Web) 의존성을 검색하여 추가합니다.

    프로젝트 생성(Generate)을 누르고 .zip 파일을 다운로드 한 후 프로젝트 디렉토리에서 압축을 해제합니다.

    Step 2: 코드 추가하기

    프로젝트 디렉토리의 src/main/java/com/example/demo/DemoApplication.java를 엽니다.

    소스 파일을 다음 내용과 같이 입력하고 저장합니다.

    package com.example.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class DemoApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(DemoApplication.class, args);
    	}
    
    	@GetMapping("/hello")
    	public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
    		return String.format("Hello %s!", name);
    	}
    }
    코드 비고
    Line 10 @RestController 스프링에서 웹을 통해서 호출 될 수 있는 앤드포인트를 의미합니다.
    Line 16 @GetMapping("/hello") http://localhost:8080/hello HTTP 요청이 들어오면 hello() 메소드가 요청을 처리합니다.
    Line 17 @RequestParam 매핑된 HTTP 요청에서 name 파라미터를 기대 할 수 있으며, 파라미터가 전달되지 않았다면 디폴트로 World 문자열을 사용합니다.

    Step 3: 프로젝트 실행

    프로그램을 빌드하고 실행합니다. 터미널을 열고 프로젝트 파일이 있는 디렉토리로 이동합니다. ./gradlew을 실행하면 애플리케이션을 빌드하고 실행합니다.

    $ ./gradlew bootRun

    윈도우에서는 CLI에서 .\gradlew.bat 입력합니다.

    .\gradlew.bat bootRun

    프로그램이 정상적으로 빌드되면 실행 로그는 다음과 같습니다.

    $ ./gradlew bootRun
    > Task :bootRun
     :: Spring Boot ::                (v3.1.5)
    2023-11-07T18:41:31.686+09:00  INFO 47731 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 17.0.9 with PID 47731 (/Users/guenbongpark/Desktop/demo/build/classes/java/main started by guenbongpark in /Users/guenbongpark/Desktop/demo)
    2023-11-07T18:41:31.687+09:00  INFO 47731 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
    2023-11-07T18:41:32.100+09:00  INFO 47731 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
    2023-11-07T18:41:32.105+09:00  INFO 47731 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2023-11-07T18:41:32.105+09:00  INFO 47731 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.15]
    2023-11-07T18:41:32.160+09:00  INFO 47731 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2023-11-07T18:41:32.160+09:00  INFO 47731 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 446 ms
    2023-11-07T18:41:32.323+09:00  INFO 47731 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2023-11-07T18:41:32.327+09:00  INFO 47731 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 0.827 seconds (process running for 0.993)
    <==========---> 80% EXECUTING [12s]
    > :bootRun

    스프링 부트에 임베디드 서버인 아파치 톰캣(Apache Tomcat)은 서버 역할을 수행하며 localhsot8080 포트를 리스닝합니다.

    웹 브라우저를 실행하고 주소 창에 http://localhost:8080/hello를 입력합니다.

    주소 창에 쿼리 스트링(Query string)을 포함하여 요청 파라미터를 처리하는 스프링 코드를 확인합니다. 예를 들어 http://localhost:8080/hello?name=Army 실행 결과는 다음과 같습니다.

    정리 및 복습

    • Spring initializr(start.spring.io)는 스프링 프로젝트 빠르고 간편하게 생성을 위한 웹 도구입니다.
    • 스프링 부트 3.0 이상에서는 JDK 17 버전 이상을 요구합니다.
    • @RestController는 스프링에서 웹을 통해서 호출 될 수 있는 앤드포인트임을 의미합니다.
    • @GetMapping은 어노테이션이 지정하는 URL에 의한 HTTP 요청을 처리하는 메소드임을 의미합니다.
    • @RequestParam은 HTTP 요청에 대한 파라미터를 정의합니다. 파라미터의 이름과 디폴트 값을 지정합니다.