TIL - 20260129

juni·2026년 1월 28일

TIL

목록 보기
253/317

0129 스프링 부트 프로젝트 시작하기 (1/N): 프로젝트 생성과 기본 구조


✅ 1. Spring Boot: 이론에서 실전으로

  • 지금까지 학습한 Java, 객체 지향, 데이터베이스, Spring의 핵심 원리(IoC/DI, AOP) 등의 이론을 바탕으로, 이제 실제 동작하는 웹 애플리케이션을 만들어보는 첫 단계입니다.
  • Spring Boot는 복잡한 초기 설정을 자동화하여, 개발자가 빠르게 비즈니스 로직 개발에 집중할 수 있도록 도와주는 강력한 도구입니다.

✅ 2. Spring Initializr: 프로젝트 자동 생성기

  • Spring Initializr(start.spring.io)는 몇 번의 클릭만으로 Spring Boot 프로젝트의 기본 골격을 자동으로 생성해주는 공식 웹 도구입니다.

➕ 프로젝트 생성 시 주요 선택 항목

항목설명선택 예시
Project프로젝트의 빌드 관리 도구를 선택. (Gradle이 더 현대적이고 유연)Gradle - Groovy
Language사용할 프로그래밍 언어.Java
Spring Boot사용할 Spring Boot 버전. (SNAPSHOT, M 등 표기가 없는 안정 버전 선택)3.x.x
Project MetadataGroup: 보통 회사의 도메인을 역순으로 사용. (e.g., com.example)
Artifact: 프로젝트의 이름. (e.g., my-project)
-
Packaging프로젝트를 패키징할 방식. Jar가 내장 웹 서버를 포함하여 단독 실행이 가능하므로 표준.Jar
Java사용할 Java 버전.17
Dependencies프로젝트에 필요한 라이브러리(Starter) 묶음.Spring Web: Spring MVC와 내장 Tomcat을 포함하여 웹 애플리케이션 개발에 필수.
Lombok: Getter, Setter 등 보일러플레이트 코드를 줄여주는 라이브러리.
  • 위 항목들을 선택하고 'GENERATE' 버튼을 누르면, 프로젝트의 기본 구조가 담긴 압축 파일이 다운로드됩니다.

✅ 3. Spring Boot 프로젝트의 기본 구조

  • IntelliJ나 Eclipse와 같은 IDE로 생성된 프로젝트를 열면, 다음과 같은 표준적인 디렉토리 구조를 볼 수 있습니다.

  • build.gradle:

    • 프로젝트의 심장. Gradle 빌드 도구의 설정 파일입니다.
    • dependencies { ... } 블록 안에 프로젝트에 필요한 모든 라이브러리(의존성)를 정의하고 관리합니다.
    • 프로젝트를 빌드하고 실행하는 방법에 대한 작업(Task)이 정의되어 있습니다.
  • src/main/java:

    • 실제 Java 소스 코드가 위치하는 곳입니다.
    • 프로젝트 생성 시, @SpringBootApplication 어노테이션이 붙은 메인 애플리케이션 클래스가 자동으로 생성됩니다.
  • src/main/resources:

    • Java 코드가 아닌, 설정 파일이나 정적 리소스들이 위치하는 곳입니다.
    • application.properties (또는 application.yml): 데이터베이스 연결 정보, 서버 포트 등 애플리케이션의 모든 외부 설정을 관리하는 가장 중요한 파일.
    • static/: CSS, JavaScript, 이미지 등 정적 파일.
    • templates/: Thymeleaf와 같은 서버 사이드 템플릿 파일.
  • src/test/java:

    • 단위 테스트, 통합 테스트 등 테스트 코드가 위치하는 곳입니다.

✅ 4. "Hello World" API 만들어보기

  • 프로젝트가 정상적으로 생성되고 실행되는지 확인하기 위해, 간단한 "Hello World"를 반환하는 API를 만들어봅니다.
  1. 메인 애플리케이션 클래스 확인:

    • ...Application.java 파일을 보면 @SpringBootApplication 어노테이션이 있습니다. 이 어노테이션 하나가 자동 구성, 컴포넌트 스캔 등 Spring Boot의 수많은 마법을 가능하게 하는 시작점입니다.
    @SpringBootApplication
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
  2. Controller 클래스 생성:

    • src/main/java 아래에 controller 패키지를 만들고, HelloController.java 파일을 생성합니다.
    package com.example.myproject.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController // 이 클래스가 REST API 컨트롤러임을 선언
    public class HelloController {
    
        @GetMapping("/") // HTTP GET 요청이 루트 경로("/")로 들어왔을 때 이 메서드를 실행
        public String hello() {
            return "Hello, World!";
        }
    }
    • @RestController: 이 컨트롤러의 모든 메서드는 뷰(HTML)를 반환하는 대신, 반환 값을 HTTP 응답 본문에 직접 써서 보냅니다. (주로 JSON이나 텍스트)
    • @GetMapping: HTTP GET 요청을 특정 URL 경로에 매핑합니다.
  3. 애플리케이션 실행:

    • IDE에서 메인 애플리케이션 클래스를 실행하거나, 터미널에서 ./gradlew bootRun 명령어를 실행합니다.
    • 콘솔 로그에 Tomcat이 8080 포트에서 시작되었다는 메시지가 나타납니다.
  4. 결과 확인:

    • 웹 브라우저에서 http://localhost:8080으로 접속하면, 화면에 "Hello, World!"가 표시되는 것을 확인할 수 있습니다.

📌 요약

  • Spring Initializr(start.spring.io)를 사용하면 Spring Boot 프로젝트의 기본 골격을 쉽고 빠르게 생성할 수 있습니다.
  • build.gradle은 프로젝트의 의존성을 관리하고, application.yml은 외부 설정을 관리하는 핵심 파일입니다.
  • @SpringBootApplication 어노테이션은 Spring Boot의 자동 구성을 활성화하는 시작점입니다.
  • @RestController@GetMapping 어노테이션을 사용하여, 특정 URL 요청에 텍스트나 JSON을 응답하는 간단한 REST API를 만들 수 있습니다.

0개의 댓글