Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3, 4 단계 - 체스] 져니(이지원) 미션 제출합니다. #604

Merged
merged 76 commits into from
Mar 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
b63b1e3
feat: service layer를 제거하고 dto에 대한 static mapper 클래스를 생성한다
Cl8D Mar 23, 2023
4427291
fix: 아군 기물인지 검증하는 기능에 대해 불필요한 예외 발생 로직을 제거한다
Cl8D Mar 23, 2023
fb8682f
feat: 점수에 대해 관리하는 클래스를 생성한다
Cl8D Mar 24, 2023
9e0f5dd
feat: 체스말이 킹인지 확인하는 기능을 추가한다
Cl8D Mar 24, 2023
107aaad
feat: 현재 체스판에 살아있는 킹을 조회한다
Cl8D Mar 24, 2023
e6476e8
feat: 현재 체스 게임에서 킹이 살아있는지 판단한다
Cl8D Mar 24, 2023
2bbad93
feat: 각 기물의 점수에 대해 더하고, 빼고, 곱하는 기능을 추가한다
Cl8D Mar 24, 2023
93ea4b9
feat: 체스말이 폰인지 판단한다
Cl8D Mar 24, 2023
2920874
feat: 흑진영, 백진영의 체스판을 반환한다
Cl8D Mar 24, 2023
04e9920
feat: 폰이 이동이나 공격할 때 앞으로 이동하는지 검증한다
Cl8D Mar 24, 2023
bb61e76
feat: 현재 체스판의 각 진영에 대한 점수를 계산한다
Cl8D Mar 25, 2023
a15f708
feat: status에 대한 명령어와 테스트를 추가한다
Cl8D Mar 25, 2023
c183445
feat: 각 진영의 점수와 이긴 진영에 대해서 출력한다
Cl8D Mar 25, 2023
54ff520
feat: 킹이 사망하였다면 게임의 진행 상태를 false로 만든다
Cl8D Mar 25, 2023
47be1dc
feat: 게임이 시작 상태일 때 사용자가 입력한 명령어가 status면 예외가 발생한다
Cl8D Mar 25, 2023
75079e7
feat: EndController의 생성자에 대해 접근 제어자를 변경한다
Cl8D Mar 25, 2023
62a1df9
feat: 킹이 모두 살아있는 경우 게임의 결과에 대해 출력하는 기능을 추가한다
Cl8D Mar 25, 2023
ca5389e
feat: 게임이 움직임 상태일 때 status를 입력하면 게임 결과를 출력하도록 제어한다
Cl8D Mar 25, 2023
3575b90
docs: 기물에 대한 기능 명세서를 수정한다
Cl8D Mar 26, 2023
9f2ba13
refactor: 명령어를 입력받는 기능의 네이밍을 변경한다
Cl8D Mar 26, 2023
23d07fe
docs: 기능 명세서를 수정한다
Cl8D Mar 26, 2023
8eee586
build: mysql, snakeyaml dependency를 추가한다
Cl8D Mar 26, 2023
f886775
feat: DB 연결에 필요한 프로퍼티 정보를 관리한다
Cl8D Mar 26, 2023
74cfdd1
feat: 사용자의 이름 길이에 대한 검증 기능을 추가한다
Cl8D Mar 26, 2023
ec032ea
feat: 쿼리에 따라 1개의 결과를 조회하는 기능을 추가한다
Cl8D Mar 26, 2023
265e0d2
feat: 사용자의 이름을 기준으로 사용자 엔티티를 조회한다
Cl8D Mar 26, 2023
737f81d
feat: 사용자의 정보를 삽입하는 기능을 추가한다
Cl8D Mar 26, 2023
832eba9
feat: 사용자가 입력한 이름이 이미 존재하는지 검증한다
Cl8D Mar 26, 2023
0661b08
feat: 사용자의 이름을 바탕으로 사용자의 정보를 삽입한다
Cl8D Mar 26, 2023
618bd08
fix: 자동으로 생성된 키를 반환하도록 옵션을 추가한다
Cl8D Mar 26, 2023
a0fba3c
feat: 사용자의 정보가 이미 존재할 경우 존재하는 아이디를 반환하도록 수정한다
Cl8D Mar 26, 2023
113b388
refactor: 패키지 이동을 진행한다
Cl8D Mar 26, 2023
3f5eb19
feat: 사용자의 아이디를 기준으로 체스 게임을 조회한다
Cl8D Mar 26, 2023
d5a4334
feat: final 키워드를 붙인다
Cl8D Mar 26, 2023
beb6363
feat: 체스 게임 아이디를 기준으로 체스말 리스트의 정보를 조회한다
Cl8D Mar 26, 2023
cb34b70
feat: pieceEntity에서 체스판을 생성하는 mapper class를 추가한다
Cl8D Mar 26, 2023
9d2914b
feat: 체스 게임 아이디를 기준으로 체스판 정보를 조회한다
Cl8D Mar 26, 2023
22d66a8
feat: 체스판 조회 시 ChessBoard를 반환하도록 변경한다
Cl8D Mar 26, 2023
9707f95
feat: 사용자의 아이디에 해당하는 체스 게임이 존재하면 해당 게임을 반환하고, 아니라면 새 게임을 반환한다
Cl8D Mar 26, 2023
e394f37
refactor: 메서드 이름을 변경한다
Cl8D Mar 26, 2023
0eb3004
feat: 입력으로 들어온 체스 게임에 대한 체스말의 정보를 저장한다
Cl8D Mar 26, 2023
9f08e21
feat: 사용자가 현재 진행 중인 체스 게임을 저장한다
Cl8D Mar 26, 2023
eca3a55
test: 사용자 정보에 대한 테스트 로직을 변경한다
Cl8D Mar 26, 2023
33a1f83
test: 체스 게임에 대한 테스트 로직을 변경한다
Cl8D Mar 26, 2023
4649903
feat: 입력으로 들어온 체스 게임에 대해 특정 위치에 존재하는 체스말의 정보를 제거한다
Cl8D Mar 26, 2023
36dfe42
feat: 체스 게임 아이디에 해당하는 체스말 정보를 제거한다
Cl8D Mar 27, 2023
0a6c3f2
feat: 체스 게임 아이디에 해당하는 게임의 현재 진영을 업데이트한다
Cl8D Mar 27, 2023
2e98cfa
test: mapper 테스트에 대한 코드를 수정한다
Cl8D Mar 27, 2023
04fb202
feat: 사용자의 아이디에 해당하는 체스 게임을 제거한다
Cl8D Mar 27, 2023
a56e8ab
feat: chessGame의 생성자에서 진영을 받아올 수 있도록 수정한다
Cl8D Mar 27, 2023
6f01133
fix: delete 연산 시 key를 받아오지 않는 것을 수정하기 위해 예외 발생 로직을 변경한다
Cl8D Mar 27, 2023
7ad0aa6
feat: 사용자의 아이디를 기준으로 체스 게임을 조회한다
Cl8D Mar 27, 2023
121bc27
feat: 체스말 정보를 바탕으로 체스말을 저장한다
Cl8D Mar 27, 2023
c623a30
feat: 입력받은 위치에 해당하는 체스말을 제거한다
Cl8D Mar 27, 2023
7df4018
feat: 체스판의 모든 기물을 저장한다
Cl8D Mar 27, 2023
ec1db9c
feat: 체스 게임 아이디에 해당하는 모든 기물을 제거한다
Cl8D Mar 27, 2023
06bf99d
feat: 체스말 정보를 바탕으로 체스말을 저장한다
Cl8D Mar 27, 2023
1c461e7
feat: 체스 게임 아이디에 해당하는 진영 정보를 업데이트한다
Cl8D Mar 27, 2023
6593a07
feat: 입력받은 위치에 해당하는 체스말을 제거한다
Cl8D Mar 27, 2023
cb18d5d
feat: 사용자의 아이디에 해당하는 체스 기물과 체스판 정보를 제거한다
Cl8D Mar 27, 2023
e8390b5
feat: 서비스의 생성을 관리하는 클래스를 생성한다
Cl8D Mar 27, 2023
d4aeaea
feat: 사용자에게 이름을 입력받는 기능을 추가한다
Cl8D Mar 27, 2023
89913cd
feat: ServiceManager에 대한 mock 객체를 생성한다
Cl8D Mar 27, 2023
165e847
feat: 이동 시 게임에 대한 정보를 저장한다
Cl8D Mar 27, 2023
1d433e8
feat: 체스판 출력 기능을 추가한다
Cl8D Mar 27, 2023
7129d4a
refactor: ScoreVO와 Service 인터페이스의 네이밍을 변경한다
Cl8D Mar 30, 2023
4c2ccfb
feat: 체스판의 출력 기능을 핸들러에게 위임한다
Cl8D Mar 30, 2023
a35e743
feat: chessGame을 인자로 관리하지 않도록 변경한다
Cl8D Mar 30, 2023
8745349
refactor: 메서드에 대한 네이밍을 변경한다
Cl8D Mar 30, 2023
69d4c58
test: assertAll로 리팩터링을 진행한다
Cl8D Mar 30, 2023
a44da58
feat: @BeforeAll을 @BeforeEach로 변경한다
Cl8D Mar 30, 2023
e58e270
feat: entity의 equals, hashcode를 제거한다
Cl8D Mar 30, 2023
c2a1f45
refactor: long에 대한 불필요한 wrapper 형을 제거한다
Cl8D Mar 30, 2023
becd15d
refactor: save에 대한 네이밍을 insert로 변경한다
Cl8D Mar 30, 2023
e0bc4d9
fix: ChessGame에 대한 equals, hashcode 재정의를 삭제한다
Cl8D Mar 30, 2023
fe690b2
feat: MoveController에 존재하던 db 관련 로직을 서비스에게 위임한다
Cl8D Mar 30, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
267 changes: 209 additions & 58 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,100 @@

## ✔ 기능 요구사항

## ✨ Controller

### Controller

- [x] 사용자가 입력한 명령어에 따라 게임의 상태를 확인한다.
- [x] 현재 게임이 실행 중인지 판단한다.

### EndController

- [x] 사용자가 입력한 명령어가 End가 아니라면 예외를 발생시킨다.
- [x] 현재 게임이 실행 중인지 판단한다.

### MoveController

- [x] 사용자가 입력한 명령어에 따라서 상태를 변경한다.
- [x] 사용자가 입력한 명령어가 Start라면 예외를 발생시키고, End라면 종료한다.
- [x] 사용자가 입력한 status거나 모든 킹이 살아있는 게 아니라면 상태를 status로 변경한다.
- [x] 사용자가 입력한 체스말을 시작 지점에서 끝 지점으로 이동시키고, 차례를 변경한다.
- [x] 현재 게임이 실행 중인지 판단한다.

### StartController

- [x] 사용자가 입력한 명령어가 move/status라면 예외를 발생시키고, End라면 종료한다.
- [x] 현재 게임이 실행 중인지 판단한다.

### StatusController

- [x] 사용자가 입력한 명령어가 start라면 예외를 발생시키고, move면 상태를 move로 변경하고, end라면 종료한다.
- [x] status일 경우 각 진영의 체스판 점수를 계산한다.
- [x] 현재 게임이 실행 중인지 판단한다.
- [x] 현재 살아있는 킹이 없다면 종료 메시지를 출력하고, end로 변경한다.

### ChessHandler

- [x] 체스 게임에 대한 전반적인 실행을 담당한다.

### Command

- [x] 사용자가 입력한 명령어에 대해서 관리한다.
- [x] 사용자가 입력한 명령어가 start, move, end인지 검증한다.
- [x] 사용자가 입력한 명령어가 start인지 확인한다.
- [x] 사용자가 입력한 명령어가 end인지 확인한다.
- [x] 사용자가 입력한 명령어가 status인지 확인한다.
- [x] 사용자가 입력한 명령어가 move일 때 올바른 명령어 길이로 들어오는지 확인한다.

### CommandType

- [x] 명령어의 종류에 대해서 관리한다. (start, move, end, status)

---

## ✨dao

### RowMapper

- [x] DB에서 조회한 결과에 대해 각 테이블에 맞는 엔티티로 매핑시킨다.

### UserDaoImpl

- [x] 사용자의 이름을 기준으로 사용자 엔티티를 조회한다.
- [x] 사용자의 정보를 삽입한다.

### ChessGameDaoImpl

- [x] 사용자의 아이디를 기준으로 체스 게임을 조회한다.
- [x] 사용자가 현재 진행 중인 체스 게임을 저장한다.
- [x] 체스 게임 아이디에 해당하는 게임의 현재 진영을 업데이트한다.
- [x] 사용자의 아이디에 해당하는 체스 게임을 제거한다.

### PieceDaoImpl

- [x] 체스 게임 아이디를 기준으로 체스말 리스트의 정보를 조회한다.
- [x] 입력으로 들어온 체스 게임에 대한 체스말의 정보를 저장한다.
- [x] 입력으로 들어온 체스 게임에 대해 특정 위치에 존재하는 체스말의 정보를 제거한다.
- [x] 체스 게임 아이디에 해당하는 체스말 정보를 제거한다

---

## ✨database

### ChessProperties

- [x] DB 연결에 필요한 프로퍼티 정보를 관리한다.

### JdbcTemplate

- [x] 쿼리에 따라 테이블에서 일치하는 결과를 1개만 조회하여 매핑된 결과를 반환한다.
- [x] 쿼리에 따라 테이블에서 일치하는 결과 전부를 조회하여 매핑된 결과를 반환한다.
- [x] 쿼리에 따라 테이블에 업데이트 연산 (삽입, 수정, 삭제)을 진행한다.

---

## ✨domain - board

### ChessBoard

- [x] 체스판을 초기화한다.
Expand All @@ -13,29 +107,54 @@
- [x] 특정 위치에 존재하는 체스말을 제거한다.
- [x] 특정 위치에 체스말을 둔다.
- [x] 특정 말의 종류에 따라서 시작 위치에서 종료 위치로 이동 가능한지 판단한다.
- [x] 현재 체스판에서 살아있는 킹들을 조회한다.
- [x] 입력받은 진영의 체스판을 반환한다.

### ChessBoardFactory

- [x] 체스판의 초기 상태에 대해서 초기화한다.

---

## ✨domain - chess

### ScoreVO

- [x] 각 진영의 체스 결과에 대한 점수를 담는다.

### ChessGame

- [x] 체스 게임을 진행한다.
- [x] 현재 체스 게임에서 킹이 살아있는지 판단한다.
- [x] WHITE 진영의 체스판을 반환한다.
- [x] BLACK 진영의 체스판을 반환한다.

### CampType

- [x] 사용자의 진영을 관리한다.
- [x] 입력받은 위치의 열이 소문자면 WHITE, 대문자면 BLACK 진영으로 나눈다.
- [x] 플레이할 진영을 번갈아가며 반환한다.

### Piece
### ChessScoreCalculator

- [x] 체스말이 어떤 진영에 속하는지 관리한다.
- [x] 두 개의 체스말이 동일한 진영에 속하는지 판단한다.
- [x] 체스말이 입력받은 진영에 속하는지 판단한다.
- [x] 체스말이 시작 위치에서 도착 위치로 이동 가능한지 판단한다.
- [x] 체스말이 공격 가능한지 판단한다.
- [x] 현재 체스판의 각 진영에 대한 점수를 계산한다.

### PieceType
---

- [x] 체스말의 종류를 관리한다.
- [x] 특정 체스말이 시작 위치에서 종료 위치까지 이동 가능한지 판단한다.
## ✨domain - piece

### Direction

- [x] 체스말이 이동하는 방향으로 관리한다.
- [x] 모든 방향에 대해서 반환한다.
- [x] 상하좌우에 대해서 반환한다.
- [x] 상하좌우의 대각선에 대해서 반환한다.

### Location

- [x] 이동 가능한 모든 위치에 대해 관리한다.
- [x] 이동 가능한 위치에 새로운 정보를 추가한다.
- [x] 이동 가능한 위치에 입력받은 위치가 포함되어 있는지 확인한다.

### Position

Expand All @@ -50,107 +169,139 @@
- [x] 현재 위치의 rank과 입력받은 위치의 rank가 동일한지 판단한다.
- [x] 현재 위치와 입력받은 위치가 동일한지 판단한다.

### Direction
### PositionConverter

- [x] 체스말이 이동하는 방향으로 관리한다.
- [x] 모든 방향에 대해서 반환한다.
- [x] 상하좌우에 대해서 반환한다.
- [x] 상하좌우의 대각선에 대해서 반환한다.
- [x] 입력받은 source, target 위치를 가로, 세로 값으로 분리한다.
- [x] 가로값은 왼쪽부터 0~7 세로값은 아래부터 0~7으로 변환한다.
- [x] 사용자가 입력한 위치를 검증한다.
- [x] 입력받은 위치 명령어의 길이가 2인지 확인한다.
- [x] 첫 번째 글자가 a~h, 두 번째 글자가 1~8인지 확인한다.

### Movable
### Score

- [x] 체스말의 움직임을 관리한다.
- [x] 점수에 대해서 관리한다.
- [x] 인자로 들어온 점수를 합한 값을 반환한다.
- [x] 인자로 들어온 점수를 뺀 값을 반환한다.
- [x] 인자로 들어온 횟수만큼 곱한 값을 반환한다.

### Piece

- [x] 체스말이 어떤 진영에 속하는지 관리한다.
- [x] 두 개의 체스말이 동일한 진영에 속하는지 판단한다.
- [x] 체스말이 입력받은 진영에 속하는지 판단한다.
- [x] 체스말이 시작 위치에서 도착 위치로 이동 가능한지 판단한다.
- [x] 체스말이 공격 가능한지 판단한다.
- [x] 체스말이 킹인지 판단한다.
- [x] 체스말이 폰인지 판단한다.

### Location
### PieceType

- [x] 이동 가능한 모든 위치에 대해 관리한다.
- [x] 이동 가능한 위치에 새로운 정보를 추가한다.
- [x] 이동 가능한 위치에 입력받은 위치가 포함되어 있는지 확인한다.
- [x] 체스말의 종류를 관리한다.
- [x] 특정 체스말이 시작 위치에서 종료 위치까지 이동 가능한지 판단한다.
- [x] 각 체스말의 점수에 대해 관리한다.

### Movable

- [x] 체스말의 움직임을 관리한다.
- [x] 체스말이 공격 가능한지 판단한다.

### Move

- [x] 입력받은 위치로 이동시킨다.
- [x] 체스말이 이동 가능한 위치를 전부 반환한다.

### QueenMove
### Queen

- [x] 입력받은 위치에 대해서 퀸이 이동 가능한지 판단한다.

### RookMove
### Rook

- [x] 입력받은 위치에 대해서 룩이 이동 가능한지 판단한다.

### BishopMove
### Bishop

- [x] 입력받은 위치에 대해서 비숍이 이동 가능한지 판단한다.

### KingMove
### King

- [x] 입력받은 위치에 대해서 킹이 이동 가능한지 판단한다.

### KnightMove
### Knight

- [x] 입력받은 위치에 대해서 나이트가 이동 가능한지 판단한다.

### PawnMove
### Pawn

- [x] 입력받은 출발 위치의 행보다 도착 위치의 행이 더 크면 UP 방향, 아니면 DOWN 방향으로 이동할 수 있는지 판단한다.

### PositionConverter
---

- [x] 입력받은 source, target 위치를 가로, 세로 값으로 분리한다.
- [x] 가로값은 왼쪽부터 0~7 세로값은 아래부터 0~7으로 변환한다.
- [x] 사용자가 입력한 위치를 검증한다.
- [x] 입력받은 위치 명령어의 길이가 2인지 확인한다.
- [x] 첫 번째 글자가 a~h, 두 번째 글자가 1~8인지 확인한다.
## ✨domain - user

### InputView
### User

- [x] 명령어를 입력받는다.
- [x] 사용자의 이름이 20자 초과라면 예외를 발생시킨다.

### Command
---

- [x] 사용자가 입력한 명령어에 대해서 관리한다.
- [x] 사용자가 입력한 명령어가 start, move, end인지 검증한다.
- [x] 사용자가 입력한 명령어가 start인지 확인한다.
- [x] 사용자가 입력한 명령어가 end인지 확인한다.
- [x] 사용자가 입력한 명령어가 move일 때 올바른 명령어 길이로 들어오는지 확인한다.
## ✨domain - entity

### CommandType
### UserEntity

- [x] 명령어의 종류에 대해서 관리한다. (start, move, end)
- [x] user (사용자) 테이블에서 조회한 결과에 대해 담는다.

### Status
### ChessGameEntity

- [x] 사용자가 입력한 명령어에 따라 게임의 상태를 확인한다.
- [x] 현재 게임이 실행 중인지 판단한다.
- [x] chess_game (체스 게임) 테이블에서 조회한 결과에 대해 담는다.

### EndController
---

- [x] 사용자가 입력한 명령어가 End가 아니라면 예외를 발생시킨다.
- [x] 현재 게임이 실행 중인지 판단한다.
## ✨domain - service

### MoveController
### UserService

- [x] 사용자가 입력한 명령어가 Start라면 예외를 발생시키고, End라면 종료한다.
- [x] 사용자가 입력한 체스말을 시작 지점에서 끝 지점으로 이동시키고, 차례를 변경한다.
- [x] 현재 게임이 실행 중인지 판단한다.
- [x] 사용자가 입력한 이름이 이미 존재한다면 해당 사용자의 아이디를, 아니라면 새롭게 삽입 후 생성된 아이디를 반환한다.
- [x] 사용자의 이름을 바탕으로 사용자의 정보를 삽입한다.

### StartController
### ChessGameService

- [x] 사용자가 입력한 명령어가 Move라면 예외를 발생시키고, End라면 종료한다.
- [x] 현재 게임이 실행 중인지 판단한다.
- [x] 사용자의 아이디에 해당하는 체스 게임이 존재하면 해당 게임을 반환하고, 아니라면 새 게임을 반환한다.
- [x] 사용자의 아이디를 기준으로 체스 게임을 조회한다.
- [x] 체스말 정보를 바탕으로 체스말을 저장한다.
- [x] 체스 게임 아이디에 해당하는 진영 정보를 업데이트한다.
- [x] 입력받은 위치에 해당하는 체스말을 제거한다.
- [x] 사용자의 아이디에 해당하는 체스 기물과 체스판 정보를 제거한다.

### PieceName
### ChessBoardService

- [x] 체스말의 종류에 따라 체스말의 이름으로 변환한다.
- [x] 체스 게임 아이디를 기준으로 체스판 정보를 조회한다.
- [x] 체스말 정보를 바탕으로 체스말을 저장한다.
- [x] 입력받은 위치에 해당하는 체스말을 제거한다.
- [x] 체스판의 모든 기물을 저장한다.
- [x] 체스 게임 아이디에 해당하는 모든 기물을 제거한다.

### ServiceManager

- [x] 서비스의 생성을 총괄한다.

---

## ✨domain - view

### InputView

- [x] 명령어를 입력받는다.

### OutputView

- [x] 사용자에게 이름을 입력받는 메시지를 출력한다.
- [x] 게임 안내 메시지를 출력한다.
- [x] 체스판에 있는 체스말을 출력하고, 비어있는 곳은 .으로 출력한다.
- source에 있는 말이 target으로 이동된 체스판을 출력한다.
- [x] 각 진영의 점수와 이긴 진영에 대해서 출력한다.

### PieceName

- [x] 체스말의 종류에 따라 체스말의 이름으로 변환한다.

---

Expand Down
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ repositories {
}

dependencies {
runtimeOnly 'mysql:mysql-connector-java:8.0.28'
implementation 'org.yaml:snakeyaml:2.0'
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

프로퍼티의 경우 yml로 관리하기 위해서 별도의 라이브러리를 설치하여 진행하였는데, 혹시 구현 요구사항에 위반되는 내용이라면 변경하겠습니다! 🙇‍♀️

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아닙니다. 저는 사용해도 무방하다고 생각합니다!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

runtimeOnly, implementation 차이를 알고 사용하신걸까욥?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

runtimeOnly는 runtime 때 해당 dependency를 불러오는 것이고, implementation은 컴파일 시점부터 rumtime 때까지 해당 dependency가 유지되는 것이라고 생각했습니다! DB 관련 depdency의 경우 컴파일 시점에서는 해당 의존성이 필요없고 실제로 동작했을 때 DB 관련 커넥션들을 맺으면서 필요하기 때문에 주로 runtimeOnly로 선언하는 것으로 알고 있습니다 🫠...

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹여나, 그냥 복붙해서 넣으신건가 해서 한번 여쭤봤어요ㅎㅎ.. 무엇이든 파악하고 쓰셨으면 해서요ㅎㅎ👍

testImplementation 'org.assertj:assertj-core:3.22.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
}
Expand Down
13 changes: 6 additions & 7 deletions src/main/java/chess/ChessApplication.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
package chess;

import chess.controller.ChessHandler;
import chess.service.ChessBoardService;
import chess.service.PieceService;
import chess.service.PositionService;
import chess.database.JdbcTemplate;
import chess.database.properties.ChessProperties;
import chess.service.ServiceManager;

public final class ChessApplication {
public static void main(String[] args) {
final PieceService pieceService = new PieceService();
final PositionService positionService = new PositionService();
final ChessBoardService chessBoardService = new ChessBoardService(pieceService, positionService);
final ChessHandler chessHandler = new ChessHandler(chessBoardService);
final ChessProperties chessProperties = new ChessProperties();
final ServiceManager serviceManager = new ServiceManager(new JdbcTemplate(chessProperties));
final ChessHandler chessHandler = new ChessHandler(serviceManager);
chessHandler.run();
}
}