Spring Boot 쇼핑몰 프로젝트

Codren·2021년 10월 20일
28

Spring Boot 쇼핑몰

목록 보기
32/32

Spring Boot 를 기반으로 구현한 간단한 쇼핑몰 웹 사이트



🎯 프로젝트 개발 동기 및 목표

스프링, 스프링 부트, JPA, 시큐리티 등의 기술스택들을 이론적으로 학습한 뒤에 실제로 어떻게 동작하는지 이해하기 위해서 간단한 쇼핑몰 프로젝트를 구현해봄. 흔한 쇼핑몰 프로젝트일지라도 완성하는 것에 초점을 두지 않고, 사용되는 기술에 대한 정확한 개념 및 사용법, 그리고 동작원리에 대해서 초점을 맞추었고, 또한 개발 과정에서 맞이하는 에러 및 궁금증들을 자세하게 찾아보고 정리하면서 전체적인 흐름 파악을 목표로 두었으며 프론트보다는 백엔드에 좀 더 집중하였음.



⚙️ 프로젝트 개발 환경

  1. 운영체제 : MacOs (Big Sur)
  2. 통합개발환경(IDE) : IntelliJ
  3. JDK 버전 : JDK 11
  4. 스프링 부트 버전 : 2.5.5
  5. 데이터 베이스 : MySQL
  6. 빌드 툴 : Maven
  7. 관리 툴 : Git, GitHub



⚒️ 프로젝트 기술 스택

  • 프론트엔드
    - HTML, CSS, JS, BootStrap, Thymeleaf
  • 백엔드
    - Spring Boot, Spring Security, Spring Data JPA
  • 데이터베이스
    - Hibernate, MySQL



📜 프로젝트 구현 기능

  • 회원 (Member)
    - 회원가입 / 로그인 및 로그아웃

  • 상품 (Item)
    - 상품 등록 / 상품 관리 / 상품 수정 / 상품 조회 (메인화면) / 상품 상세 페이지

  • 주문 (Order)
    - 상품 주문 / 주문 내역 조회 / 주문 취소

  • 장바구니 (Cart)
    - 장바구니 담기 / 장바구니 조회 / 장바구니 삭제 / 장바구니 상품 주문



📂 프로젝트 DB 모델링

member - 쇼핑몰 회원 정보 테이블
cart - 회원의 장바구니 목록 테이블
cart_item - 장바구니에 담긴 상품 정보 테이블
orders - 쇼핑몰 회원들의 주문 목록 테이블
order_item - 주문된 상품 정보 테이블
item - 쇼핑몰 상품 정보 테이블
item_img - 상품에 대한 이미지 정보를 담고 있는 테이블



📜 프로젝트 API 명세서

FunctionMethodEnd PointFunctionMethodEnd Point
회원 가입 페이지Get/member/new상품 등록 페이지Get/admin/item/new
회원 가입Post/member/new상품 등록Post/admin/item/new
로그인 페이지Get/member/login상품 조회Get/admin/item/{itemId}
/admin/items
/admin/items/{page}
로그인Post/member/login상품 수정Post/admin/item/{itemId}
장바구니 담기Post/cart주문하기Post/order
장바구니 페이지Get/cart주문 내역 페이지Get/orders,
/orders/{page}
장바구니 상품 수정Patch/cartItem/{cartItemId}주문 취소Post/order/{orderId}/cancel
장바구니 상품 제거Delete/cartItem/{cartItemId}
장바구니 상품 주문Post/cart/orders



👨🏻‍💻 프로젝트 Task 진행

프로젝트 Task 진행 및 과정에서 발생한 궁금증 및 에러에 대한 고찰 모음

  1. Project Setting

  2. Page Layout  (header, footer)

  3. Sign up & Login & Logout (Spring Security)
    - Spring Security 개념 및 구조
    - Spring Security 를 통한 로그인 원리
    - thymeleaf-extras-springsecurity 동작 원리
    - "AntMatchers" 에서 "Ant"의 의미

  4. Auditing
    - Auditing 동작 원리

  5. Item Register & Update & Query & Details
    - enum 클래스란?
    - 상품 등록 구조, @NotBlank 지정 에러
    - 입력값 검증 및 에러 메시지 표시 동작 원리
    - JPA - 변경감지란?
    - Optional Path Variable 이란?
    - Get Method 와 Post Method 의 데이터 전달 방법
    - Thymeleaf - T() 표현식
    - file: URI 에 대한 궁금증
    - Querydsl 사용자 정의 리포지토리 구현

  6. Order & History & Cancel
    - "order" 테이블 생성 시 발생하는 에러에 대한 원인분석과 해결방법
    - JPA - save() 와 saveAndFlush() 의 차이
    - JPA - 양방향 매핑에서의 연관 관계 주인
    - batch_fetch_size 지정 (지연로딩)

  7. Cart & List & Delete & Order
    - 자기 자신을 List로 가지고 있는 클래스
    - 장바구니 목록 조회 @Query SQL문 분석 및 이해
    - Junit - @Autowired 는 필수인가 ?



💡 프로젝트 후 느낀 점

일상에서 당연하게 사용하고 있던 로그인, 상품주문, 장바구니 등의 기능들을 실제로 구현하려고 하니 엄청 복잡하게 느껴졌고 이해하는데 어려움이 많았지만, 작은 단위의 기능부터 시작해서 로직의 전체적인 흐름을 따라서 구현해보니 Spring 웹 개발에 대한 전체적인 흐름을 파악할 수 있었음. 프로젝트를 마무리하고 난 후에 웹 개발에 대한 자신감이 어느정도 생겼고 다음 프로젝트 개발에 대한 도전 욕구가 생김

9개의 댓글

comment-user-thumbnail
2021년 10월 26일

멋지십니다!! 사이드 프로젝트로 저도 만들고 있는데, 많은 도움 받고 갑니다!

1개의 답글
comment-user-thumbnail
2021년 10월 28일

스프링부트 쇼핑몰 프로젝트 with JPA 책을 보고 하신건가요?

1개의 답글
comment-user-thumbnail
2021년 10월 29일

프론트가 되게 예쁘네요! 저도 미적 감각을 좀 길러야..

1개의 답글
comment-user-thumbnail
2021년 12월 9일

글 잘봤습니다.!!!
깃헙주소 유튜브로 들어가니까 404에러 뜨던데 다시 알려주실수있나요??

1개의 답글
comment-user-thumbnail
2022년 12월 30일

현재는 취직하셨나요..

답글 달기