How sreeja124/-bank-api works
Bank API is a Spring Boot REST service for opening and managing accounts, depositing and withdrawing funds, transferring between accounts, and viewing transaction history. The principal flow is an HTTP request through the account controller to transactional account services, which update account state and transaction history through repositories backed by the documented in-memory H2 database; responses are mapped to API DTOs. Transfers lock accounts in a fixed order, and exception handling maps failures to JSON ProblemDetail responses. Some persistence wiring is documented but not shown in the sampled source, so that link is marked unverified.
Main entry points: AccountService.java Account service · AccountController.java Account controller · Transaction.java Transaction record · AccountRepository.java Account repository
Components 17
REST API
- Account controller
src/main/java/com/bank/api/controller/AccountController.java - Exception handler
src/main/java/com/bank/api/exception/GlobalExceptionHandler.java
Banking domain
- Account service
src/main/java/com/bank/api/service/AccountService.java - Account state
src/main/java/com/bank/api/entity/Account.java - Transaction record
src/main/java/com/bank/api/entity/Transaction.java - Transaction types
src/main/java/com/bank/api/entity/TransactionType.java
Persistence
- Account repository
src/main/java/com/bank/api/repository/AccountRepository.java - Transaction repository
src/main/java/com/bank/api/repository/TransactionRepository.java - In-memory H2
Contracts and errors
- Account requests
src/main/java/com/bank/api/dto/CreateAccountRequest.java - Amount request
src/main/java/com/bank/api/dto/AmountRequest.java - Transfer request
src/main/java/com/bank/api/dto/TransferRequest.java - Account response
src/main/java/com/bank/api/dto/AccountResponse.java - Transaction response
src/main/java/com/bank/api/dto/TransactionResponse.java - Transfer response
src/main/java/com/bank/api/dto/TransferResponse.java - Domain exceptions
src/main/java/com/bank/api/exception/BankOperationException.java
Other components
- API client
Connections 20
- API client → Account controller: sends requests
README.md - Account controller → Account service: dispatches operations
src/main/java/com/bank/api/controller/AccountController.java - Account controller → Account requests: accepts input
src/main/java/com/bank/api/controller/AccountController.java - Account controller → Amount request: accepts input
src/main/java/com/bank/api/controller/AccountController.java - Account controller → Transfer request: accepts input
src/main/java/com/bank/api/controller/AccountController.java - Account service → Account repository: loads and saves
src/main/java/com/bank/api/service/AccountService.java - Account service → Transaction repository: records and reads
src/main/java/com/bank/api/service/AccountService.java - Account service → Account state: updates balances
src/main/java/com/bank/api/service/AccountService.java - Account service → Transaction record: creates records
src/main/java/com/bank/api/service/AccountService.java - Account service → Account response: maps results
src/main/java/com/bank/api/service/AccountService.java - Account service → Transaction response: maps history
src/main/java/com/bank/api/service/AccountService.java - Account service → Transfer response: returns transfer
src/main/java/com/bank/api/service/AccountService.java - Account service → Domain exceptions: raises rule errors
src/main/java/com/bank/api/service/AccountService.java - Transaction record → Account state: references account
src/main/java/com/bank/api/entity/Transaction.java - Transaction record → Transaction types: stores type
src/main/java/com/bank/api/entity/Transaction.java - Account repository → Account state: queries entity
src/main/java/com/bank/api/repository/AccountRepository.java - Transaction repository → Transaction record: queries entity
src/main/java/com/bank/api/repository/TransactionRepository.java - Account repository → In-memory H2: persists accounts
- Transaction repository → In-memory H2: persists history
- Exception handler → Domain exceptions: handles exceptions
src/main/java/com/bank/api/exception/GlobalExceptionHandler.java