SpringBoot Basic Weekly Mission

📌 과제 설명

바우처 관리 애플리케이션

1주차 미션

  • 기본
  • SpringBoot CLI를 이용해서 프로젝트를 생성한다.
  • CLI로 제작한다.
  • 스프링 부트 애플리케이션으로 만든다.
  • 프로그램이 시작하면 다음과 같이 지원 가능한 명령어를 알려준다.
=== Voucher Program === 
Type exit to exit the program. 
Type create to create a new voucher.
Type list to list all vouchers.
  • create, list 커맨드를 지원한다.
    • create 커맨드를 통해 바우처를 생성할 수 있다.(FixedAmountVoucher, PercentDiscountVoucher)
    • list 커맨드를 통해 만들어진 바우처를 조회할 수 있다.
    • 바우처 정보를 메모리에 관리한다.
  • 적절한 로그를 기록하고 logback 설정을해서 에러는 파일로 기록된다.
  • 실행가능한 jar 파일을 생성한다.
  • 심화
  • 메모리 관리가 아닌 파일로 관리가 되는 Repository 생성
    • 기존 메모리 레파지토리는 지우지 말고 개발 프로파일에서만 동작하게 설정
  • 고객 블랙 리스트 명단을 작성한다.
    • customer_blacklist.csv 파일을 만들고 스프링 애플리케이션에서 해당 파일을 읽을 수 있고 블랙 리스트를 조회 할 수 있다.
  • YAML 프로퍼티를 만들고 어떤 설정을 만들 수 있을지 고민해본다.

2주차 미션

기본

2-1

  • 바우처 관리 애플리케이션에 단위테스트를 작성해보세요.
    • 가능한 많은 단위 테스트코드를 작성하려고 노력해보세요.
    • 엣지 케이스(예외 케이스)를 고려해서 작성해주세요..

2-2

  • 바우처 관리 애플리케이션에서도 과정에서 다루었던 고객을 적용해보세요.
    • customers 테이블 정의 및 추가
    • CustomerRepository 추가 및 JdbcTemplate을 사용해서 구현

2-3

  • (1주차엔 파일로 관리하게 했다.) 바우처 정보를 DB로 관리해보세요.
    • 바우처에 엔터티에 해당하는 vouchers 테이블을 한번 정의해보세요.
    • 바우처 레포지토리를 만들어보세요. (JdbcTemplate을 사용해서 구현)
    • 기존의 파일에서 바우처를 관리한 것을 vouchers 테이블을 통해서 CRUD가 되게 해보세요.

심화

2-4

  • 특정 고객에게 바우처를 할당할 수 있습니다.
  • 고객이 어떤 바우처를 보유하고 있는지 조회할 수 있어야 합니다.
  • 고객이 보유한 바우처를 제거할 수 있어야 합니다.
  • 특정 바우처를 보유한 고객을 조회할 수 있어야 합니다.