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 은 세 개의 어노테이션이 합쳐진 것이다.
- @SpringBOotConfiguration : 이 클래스가 설정 클래스임을 선언
- @EnableAutoConfiguration : 필요한 설정을 자동으로 적용
- @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 |