This is a modular backend banking application built with Java, Spring Boot, Spring Data JPA, and MySQL, supporting core features like user registration, account management, transaction history, and loan processing. The system is structured using a layered architecture and exposes a RESTful API for all operations.
- Create, update, delete, and search users
- Open and manage bank accounts
- Transfer funds between accounts with transaction logging
- Apply for and repay loans
- View transaction history with filters
- Field validations with DTOs and custom error messages
- RESTful API structure with clear endpoints
The application follows a layered architecture:
Controller Layerβ Exposes endpoints via@RestControllerService Layerβ Handles business logic, validationsRepository Layerβ Manages database access using Spring Data JPADTOsβ Used for input validation and response formattingEntitiesβ Represent DB tables with JPA annotationsException Handlingβ Global error handling with@ControllerAdvice
- Java 17
- Spring Boot
- Spring Data JPA
- MySQL
- Maven
- Postman / Insomnia for API testing
- Clone the project:
git clone https://github.com/YeswanthVelugoti/Banking-Application.git
cd Banking-Application
2. Set up MySQL DB and update `application.properties`.
3. Run the application:
```bash
mvn spring-boot:run- Access the APIs using Postman or your browser.
POST /usersβ Create userGET /usersβ List usersPOST /accountsβ Open bank accountPOST /transferβ Transfer fundsPOST /transactionsβ Add transactionPOST /loans/applyβ Apply for loan
- DTOs with
@NotNull,@Email,@Size, etc. - Global exception handling using
@ControllerAdvice - Custom error messages for all validation failures
- JWT-based authentication and user roles
- Swagger/OpenAPI documentation
- Frontend client using Angular