IT 강좌(IT Lectures)/SpringBoot

3강. 스프링부트 프로젝트 생성

소울입니다 2024. 6. 24. 09:54
728x90
반응형

챕터 3: 스프링부트 프로젝트 생성

스프링부트 프로젝트를 생성하는 방법을 알아보겠습니다. 이 장에서는 Maven과 Gradle을 사용하여 스프링부트 프로젝트를 생성하고 설정하는 방법을 다룹니다.

3.1 Maven 프로젝트 생성 및 설정

Maven을 사용하여 스프링부트 프로젝트를 생성하고 설정하는 방법을 보여줍니다.

3.1.1 pom.xml 파일 설정

pom.xml 파일은 프로젝트의 종속성과 빌드 구성을 관리합니다. 여기서 스프링부트 웹 스타터와 테스트 종속성을 추가하여 기본적인 스프링부트 웹 애플리케이션을 구성합니다.

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>spring-boot-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-demo</name>
    <description>Spring Boot Demo Project</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <!-- 스프링부트 웹 스타터: 웹 애플리케이션 개발을 위한 기본 설정 제공 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 테스트용 종속성 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 스프링부트 Maven 플러그인: 애플리케이션을 패키징하고 실행하는 데 사용 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
 

3.1.2 기본 애플리케이션 클래스 작성

기본 애플리케이션 클래스는 스프링부트 애플리케이션의 진입점입니다. @SpringBootApplication 애노테이션을 사용하여 애플리케이션을 설정하고, SpringApplication.run() 메서드를 호출하여 애플리케이션을 시작합니다.

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// @SpringBootApplication: 스프링부트 애플리케이션의 진입점
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        // SpringApplication.run(): 애플리케이션을 시작하는 메서드
        SpringApplication.run(DemoApplication.class, args);
    }
}
 

3.1.3 간단한 REST 컨트롤러 작성

간단한 REST 컨트롤러를 작성하여 HTTP GET 요청을 처리하는 엔드포인트를 정의합니다.

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

// 필요한 모든 임포트
import org.springframework.web.bind.annotation.RequestMapping;

// @RestController: RESTful 웹 서비스의 컨트롤러를 정의
@RestController
public class HelloController {

    // @GetMapping: HTTP GET 요청을 처리하는 매핑
    @GetMapping("/hello")
    public String hello() {
        // 간단한 문자열을 반환하는 메서드
        return "Hello, Spring Boot!";
    }
}
 

3.1.4 애플리케이션 실행

Maven을 사용하여 애플리케이션을 실행합니다.

mvn spring-boot:run
 

브라우저에서 http://localhost:8080/hello로 접속하면 "Hello, Spring Boot!" 메시지를 확인할 수 있습니다.

3.2 Gradle 프로젝트 생성 및 설정

Gradle을 사용하여 스프링부트 프로젝트를 생성하고 설정하는 방법을 보여줍니다.

3.2.1 build.gradle 파일 설정

build.gradle 파일은 프로젝트의 종속성과 빌드 구성을 관리합니다. 여기서 스프링부트 웹 스타터와 테스트 종속성을 추가하여 기본적인 스프링부트 웹 애플리케이션을 구성합니다.

plugins {
    id 'org.springframework.boot' version '3.0.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}
 

3.2.2 기본 애플리케이션 클래스 작성

기본 애플리케이션 클래스는 스프링부트 애플리케이션의 진입점입니다. @SpringBootApplication 애노테이션을 사용하여 애플리케이션을 설정하고, SpringApplication.run() 메서드를 호출하여 애플리케이션을 시작합니다.

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// @SpringBootApplication: 스프링부트 애플리케이션의 진입점
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        // SpringApplication.run(): 애플리케이션을 시작하는 메서드
        SpringApplication.run(DemoApplication.class, args);
    }
}
 

3.2.3 간단한 REST 컨트롤러 작성

간단한 REST 컨트롤러를 작성하여 HTTP GET 요청을 처리하는 엔드포인트를 정의합니다.

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

// 필요한 모든 임포트
import org.springframework.web.bind.annotation.RequestMapping;

// @RestController: RESTful 웹 서비스의 컨트롤러를 정의
@RestController
public class HelloController {

    // @GetMapping: HTTP GET 요청을 처리하는 매핑
    @GetMapping("/hello")
    public String hello() {
        // 간단한 문자열을 반환하는 메서드
        return "Hello, Spring Boot!";
    }
}
 

3.2.4 애플리케이션 실행

Gradle을 사용하여 애플리케이션을 실행합니다.

./gradlew bootRun
 

브라우저에서 http://localhost:8080/hello로 접속하면 "Hello, Spring Boot!" 메시지를 확인할 수 있습니다.

예시 설명

  1. 프로젝트 설정:
    • Maven과 Gradle을 사용하여 스프링부트 프로젝트를 생성하고 설정합니다. pom.xml과 build.gradle 파일에 필요한 종속성을 추가하고, 빌드 도구를 통해 스프링부트 프로젝트를 초기화합니다.
  2. 애플리케이션 클래스:
    • @SpringBootApplication 애노테이션은 여러 애노테이션(@Configuration, @EnableAutoConfiguration, @ComponentScan)을 결합하여 스프링부트 애플리케이션을 구성합니다.
    • SpringApplication.run() 메서드는 애플리케이션을 시작하고 내장 서버를 실행합니다. 이 메서드를 호출하면 스프링부트 애플리케이션이 시작되고, 설정된 모든 빈이 초기화됩니다.
  3. REST 컨트롤러:
    • @RestController 애노테이션은 이 클래스가 RESTful 웹 서비스의 컨트롤러임을 나타냅니다. 이 애노테이션을 사용하면 모든 메서드의 반환값이 HTTP 응답 본문으로 직렬화됩니다.
    • @GetMapping("/hello") 애노테이션은 HTTP GET 요청을 /hello 엔드포인트와 매핑합니다. 클라이언트가 이 엔드포인트로 GET 요청을 보내면 hello() 메서드가 호출되어 "Hello, Spring Boot!" 문자열을 반환합니다.

이 예제는 스프링부트를 사용하여 간단한 웹 애플리케이션을 설정하고 실행하는 방법을 보여줍니다. 이를 통해 스프링부트의 자동 구성과 간단한 설정으로 빠르게 애플리케이션을 개발할 수 있는 장점을 경험할 수 있습니다. Maven과 Gradle을 사용한 설정 예시를 통해 두 가지 빌드 도구의 차이점과 사용 방법을 익힐 수 있습니다.

반응형