on my way

코드로 배우는 스프링 부트 웹 프로젝트 01 : 개발 도구의 준비 본문

Computer Science/Spring

코드로 배우는 스프링 부트 웹 프로젝트 01 : 개발 도구의 준비

wingbeat 2024. 7. 29. 12:34
반응형

스프링 부트 시작하기

스프링 부트를 시작하기 위해 우선 Spring Initializr(http://start.spring.io/)를 이용해 프로젝트를 생성했다. Spring Initializr는 필요한 의존성 라이브러리와 기본적인 프로젝트 구조를 자동으로 생성해주는 매우 유용한 도구다.

프로젝트 생성

 

프로젝트 생성 시 Gradle 또는 Maven을 선택할 수 있다.

Gradle과 Maven은 빌드 도구로, 프로젝트의 의존성을 관리하고 빌드 과정을 자동화하는 역할을 한다.

생성된 프로젝트는 압축 파일 형태로 제공되며, 이를 다운로드하여 원하는 디렉토리에 압축을 풀었다.

압축 파일 유형

  • JAR (Java ARchive): 자바 압축 파일로, 자바 프로그램을 실행할 수 있는 단일 파일로 패키징한 것이다.
  • WAR (Web Application ARchive): 웹 애플리케이션 압축 파일로, 웹 서버에 배포하기 위해 패키징된 파일이다. 스프링 부트에서는 주로 JAR 파일을 사용했다.

스프링 부트 의존성

스프링 부트에서는 의존성을 JAR 파일 형태로 관리한다.

프로젝트를 생성할 때 필요한 의존성을 선택하면, 자동으로 필요한 라이브러리들이 추가되었다.

DevTools

스프링 부트 DevTools는 개발 도구로, 코드를 수정할 때마다 애플리케이션을 자동으로 재시작해주는 기능을 제공한다.

개발 생산성을 높이기 위해 필수적으로 사용되었다.

 

프로젝트 폴더 구조

스프링 부트 프로젝트의 폴더 구조는 다음과 같다.

src/main/java

이 폴더는 애플리케이션의 주요 소스 코드를 포함한다.

일반적으로 패키지 구조에 따라 여러 하위 폴더로 나뉜다.

src/main/resources

이 폴더는 애플리케이션의 설정 파일과 정적 리소스를 포함한다.

application.properties 파일

application.properties 파일은 스프링 부트 애플리케이션의 설정 파일이다.

데이터베이스 설정, 서버 포트 번호, 로그 설정 등 다양한 애플리케이션 설정을 이 파일에 작성했다.

src/test/java

이 폴더는 테스트 코드를 포함한다.

단위 테스트 및 통합 테스트를 작성하여 애플리케이션의 기능을 검증할 수 있다.

build.gradle 파일

build.gradle 파일은 Gradle 빌드 도구의 설정 파일이다.

이 파일에는 프로젝트의 의존성, 빌드 스크립트, 플러그인 등이 정의되어 있다. 프로젝트의 빌드 및 배포 과정을 자동화하는 데 사용된다.

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

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

repositories {
    mavenCentral()
}

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

test {
    useJUnitPlatform()
}

 

위의 예제는 기본적인 build.gradle 파일의 구조를 보여준다.

각 섹션은 플러그인, 의존성, 빌드 설정 등을 정의했다. 

 

코드 작성

SampleController와 MemberVO 클래스를 작성했다.

 

SampleController.java

SampleController 클래스는 두 개의 엔드포인트를 제공한다.

/hello 엔드포인트는 간단한 문자열을 반환하며, /member 엔드포인트는 MemberVO 객체를 JSON 형식으로 반환한다.

package org.zerock.ex1.controller;

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

@RestController
public class SampleController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello World";
    }

    @GetMapping("/member")
    public MemberVO member() {
        MemberVO member = new MemberVO();
        member.setAge(20);
        member.setId(1);
        member.setName("Zerock");
        return member;
    }
}

 

MemberVO.java

MemberVO 클래스는 Lombok을 사용하여 간결하게 작성했다.

@Getter와 @Setter 애노테이션을 사용하여 getter와 setter 메서드를 자동으로 생성했다.

package org.zerock.ex1.controller;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class MemberVO {
    private int id;
    private String name;
    private int age;
}

 

애플리케이션 실행

bootJar 태스크를 실행하여 JAR 파일을 생성했다.

이후 커맨드 라인에서 java -jar ex1-0.0.1-SNAPSHOT.jar 명령어를 실행하여 애플리케이션을 구동할 수 있다.

 

 

 

반응형