본 프로젝트는 Spring Boot 기반의 웹 애플리케이션으로, 실시간 공연 예매 기능을 제공합니다.
Spring Security를 활용하여 사용자와 관리자 권한을 분리하여 관리의 효율성과 보안을 강화하였습니다.
Java Mail Sender를 활용하여 이메일 전송 기능을 구현했습니다.
좌석에 대한 동시성 처리를 위해 낙관적 락을 사용했습니다.
- 관리자(Admin): 공연 및 예매 전체 관리
- 사용자(User): 공연 조회 및 공연 예매
| 역할 | 기능 |
|---|---|
| 관리자 | 공연 등록, 수정, 삭제, 조회 (CRUD) |
| 사용자 | 공연 목록 및 상세 조회, 좋아요 기능 |
| 역할 | 기능 |
|---|---|
| 관리자 | 전체 예매 내역 조회, 공연별 예매 현황 조회, 에매 내역 메일 전송 |
| 사용자 | 공연 목록 필터링 조회, 공연 검색, 좋아요, 좋아요 목록 조회, 예매, 예매 내역 조회, 예매 취소 |
- 회원가입 이메일 인증코드 전송
- 공연 정보 변경에 대한 알림메일 전송
- 예매 완료 메일 전송
- 예매 시작 알림 메일 전송
- 결제 완료 메일 전송
✅ 본 프로젝트는 역할 기반 권한 제어, RESTful API 설계, 스케줄링 처리 등 실무 중심 기능을 반영하여 설계되었습니다.
![]() Java 21 |
![]() |
![]() |
![]() 3.4.5 |
![]() |
![]() |
![]() |
![]() Java Mail Sender |
![]() |
![]() |
![]() Github Actions |
![]() |
![]() |
![]() |
![]() |
| 팀장 | 팀원 | 팀원 | 팀원 | 팀원 |
|---|---|---|---|---|
![]() 서희승 |
![]() 곽지원 |
![]() 김성원 |
![]() 나상연 |
![]() 정채린 |
| 이름 | 담당 기능 |
|---|---|
| 희승 | - 좋아요 기능 - 좋아요 누른 공연에 대한 예매 시작 알림 메일 전송 - 프론트엔드 UI 통합 작업 |
| 지원 | - 예외 처리 로직 구현 - CI 설정 - 사용자 공연 목록 필터링 조회 기능 - 키워드 검색 기능 |
| 성원 | - 관리자 공연 CRUD 구현 - 좌석에 대한 동시성 처리 - 공연 정보 변경에 대한 이메일 전송 |
| 상연 | - Spring Security를 통한 인증/인가 적용 - 로그인, 회원가입 - Oauth 인증 방식의 로그인 - 공연별 예매 현황 기능 - 좋아요 누른 공연 목록 조회 |
| 채린 | - 공연 상세 조회 기능 구현 - 좌석 선택 및 예매 처리 - 나의 예매 내역 조회 - 예매 내역 상세 조회 |
-
이슈 생성
- GitHub 이슈를 통해 작업 항목 정의
-
브랜치 생성
dev브랜치에서 이슈별 작업 브랜치 생성- 브랜치 명명 규칙 예시:
feature/이슈번호/작업자 이름
-
PR 및 코드 리뷰
- 작업 완료 후 Pull Request(PR) 생성
- 팀원 간 코드 리뷰 진행
-
Merge 및 브랜치 정리
- 리뷰 완료 후
dev브랜치로 Merge - Merge 후 이슈 브랜치 삭제
dev브랜치 최신 상태 유지
- 리뷰 완료 후
-
Commit 메시지 형식
- [이모지][타입] 커밋 메시지
- 예:
♻️ feat:사용자 로그인 기능 구현
-
PR 제목 및 설명
- 제목:
[타입] 이슈번호 - 작업 내용 요약 - 본문: 작업 내용, 고려한 사항, 테스트 방법 등 기재
- 제목:
-
Branch 명명 규칙
타입/#이슈번호/작업자 일름- 예:
feat/#15/홍길동
-
Issue 제목 규칙
[타입] 작업 내용 요약
-
스타일 가이드
-
DTO 작성 기준
- 요청(Request) / 응답(Response) DTO 분리
mapper를 활용한 변환 로직 구성
-
커스텀 예외 처리
- 서비스 로직에서 발생하는 예외는 커스텀 예외로 처리
-
이름 규칙
- 클래스명: 대문자로 시작, 명확한 의미 전달
- 예:
UserService,OrderController
- 예:
- 메서드명: 동사 + 대상, camelCase 사용
- 예:
createUser(),getOrderList()
- 예:
- 변수명: camelCase 사용, 명확하고 간결하게
- 예:
userId,orderRequest
- 예:
- 클래스명: 대문자로 시작, 명확한 의미 전달
작성한 API는 아래에서 확인할 수 있습니다.
- 각 메서드의 파라미터에 대한 예외처리 과정을 개선하기 위해 Apache Commons의 util 메서드 활용
- Random의 성능 이슈를 고려하여 SecureRandom으로 대체
- 회원가입 시, 이메일 인증을 위한 무작위 인증 코드 생성
- TaskScheduler를 이용한 결제 미완료 예매 자동 취소 스케줄링
- TaskScheduler는 메모리 기반 으로 동작하여 서버 종료 시 스케줄 정보가 모두 사라짐
- 스케줄 정보를 DB에 저장하여, 서버 재시작 시에도 스케줄링 정보를 복원할 수 있도록 해결

























