[Backend/Spring] Spring Boot - 프로젝트 생성과 구조 이해

2026. 3. 29. 13:37·Backend/Spring

Spring Boot를 공부하면서 중고거래 플랫폼 "myshop"을 직접 만들어 보려고 한다.

전체 기능은 아래와 같다.

회원    - 회원가입, 로그인, 프로필, 매너온도
상품    - 등록, 수정, 삭제, 조회, 검색, 카테고리, 상태(판매중/예약중/판매완료)
관심상품 - 찜/취소
거래    - 구매 요청, 거래 확정, 거래 후기
채팅    - 유저간 채팅

프로젝트 생성

https://start.spring.io 에 접속해서 아래처럼 설정했다.

GENERATE 버튼을 클릭하면 myshop.zip 파일이 다운로드 된다.

압축을 풀고 Intellij에서 파일을 열자.

 

myshop
├── HELP.md
├── build.gradle
├── gradle
│   └── ...
├── ...
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── seongmo
    │   │           └── myshop
    │   │               └── MyshopApplication.java
    │   └── resources
    │       ├── application.yaml
    │       ├── static
    │       └── templates
    └── test
        └── java
            └── com
                └── seongmo
                    └── myshop
                        └── MyshopApplicationTests.java
  • build.gradle : 프로젝트에 필요한 라이브러리를 선언하는 파일
  • src/main/java : Java 코드가 있는 디렉터리
  • src/main/resources : 설정 파일이 있는 디렉터리
  • src/test : 테스트 코드를 작성하는 디렉터리

build.gradle 파일을 보면 dependencies { } 블록에 프로젝트를 생성할 때 추가한 의존성들이 있는 것을 볼 수 있다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.mysql:mysql-connector-j'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

 

이번에는 프로젝트의 시작점인 MyshopApplication.java 코드를 확인해보자.

package com.seongmo.myshop;

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

@SpringBootApplication
public class MyshopApplication {
	public static void main(String[] args) {
		SpringApplication.run(MyshopApplication.class, args);
	}
}

@SpringBootApplication 은 세 개의 어노테이션이 합쳐진 것이다.

  1. @SpringBOotConfiguration : 이 클래스가 설정 클래스임을 선언
  2. @EnableAutoConfiguration : 필요한 설정을 자동으로 적용
  3. @ComponentScan : 하위 패키지의 Bean을 전부 찾아 등록

@ComponentScan 은 MyshopApplication.java 가 있는 패키지(com.seongmo.myshop)를 기준으로 하위 패키지를 전부 스캔해서 @Component, @Service, @Repository, @Controller 가 붙은 클래스를 찾아 Bean으로 등록한다.

앞으로 만드는 클래스는 반드시 이 패키지 하위에 위치해야 한다.

Bean은 Spring이 만들어서 관리하는 객체
원래 Java에서 객체를 쓰려면 직접 만들어야 한다.
Spring에서는 @Service, @Component 같은 어노테이션을 붙여두면 Spring이 대신 객체를 만들어서 보관하고 이를 Bean이라고 부른다.

 

@EnableAutoConfiguration 은 classpath에 어떤 라이브러리가 있는지 보고 자동으로 설정을 적용한다.

spring-boot-starter-web 이  있으면 내장 Tomcat 서버를 자동으로 띄우고, spring-boot-starter-data-jpa 가 있으면 JPA 관련 설정을 자동으로 한다.

Tomcat은 Java 애플리케이션이 HTTP 요청을 받을 수 있게 해주는 서버
브라우저나 앱에서 http://localhost:8080/products 같은 요청을 보내면, 이 요청을 받아서 Java 코드로 전달해주는 역할을 함
Spring Boot는 Tomcat을 내장하고 있어서 별도 설치 없이 main 메서드만 실행하면 서버가 바로 뜬다.
저작자표시 (새창열림)

'Backend > Spring' 카테고리의 다른 글

[Backend/Spring] Spring Boot - @OneToMany 와 N+1 문제  (0) 2026.03.29
[Backend/Spring] Spring Boot - JPA 연관관계  (0) 2026.03.29
[Backend/Spring] Spring Boot - JPA와 MySQP 연동  (0) 2026.03.29
[Backend/Spring] Spring Boot - MVC 계층 구조와 API  (0) 2026.03.29
[Backend/Spring] Spring Boot - IoC/DI/Bean 개념과 MySQL 연결  (0) 2026.03.29
'Backend/Spring' 카테고리의 다른 글
  • [Backend/Spring] Spring Boot - JPA 연관관계
  • [Backend/Spring] Spring Boot - JPA와 MySQP 연동
  • [Backend/Spring] Spring Boot - MVC 계층 구조와 API
  • [Backend/Spring] Spring Boot - IoC/DI/Bean 개념과 MySQL 연결
Study with Me!
Study with Me!
Study with Me!
  • Study with Me!
    Seongmo
    Study with Me!
  • 전체
    오늘
    어제
    • Computer (147) N
      • Computer Science (61)
        • Data Structure (51)
        • Algorithm (6)
        • 선형대수 with C++ (4)
      • Backend (11) N
        • 백엔드 취업을 위해.. (1)
        • Spring (10) N
        • Database (0)
        • Testing (0)
        • Infra & DevOps (0)
      • Arm Architecture (1)
        • Register (0)
        • Assembly Instruction (1)
      • Linux (32)
        • Linux Kernel (4)
        • 라이브러리 함수 구현하기 (0)
        • 쉘, 쉘 명령어 구현하기 (15)
        • Ubuntu (13)
      • Cloud Infrastructure (8)
        • Kubernetes (7)
        • OpenStack Magnum (1)
      • AWS (3)
      • Baekjoon (18)
      • Tools (6)
        • Git & Github (5)
        • Vim (1)
      • 개발 환경 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    STL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Study with Me!
[Backend/Spring] Spring Boot - 프로젝트 생성과 구조 이해
상단으로

티스토리툴바