Library Management System using Spring Boot

Introduction

The Library Management System is a RESTful API built using Spring Boot that allows librarians to manage books, patrons, and borrowing records efficiently. It provides endpoints for CRUD operations, borrowing transactions, and includes features like authentication, caching, logging, and transaction management.

Features

Book Management: Create, read, update, and delete books.
Patron Management: Manage library patrons' information.
Borrowing Transactions: Record borrowing and returning of books.
Authentication: Secure API endpoints with basic authentication.
Logging: Log important events and performance metrics using Aspect-Oriented Programming (AOP).
Caching: Improve performance by caching frequently accessed data.
Validation and Error Handling: Input validation and graceful error responses.
Transaction Management: Ensure data integrity with declarative transaction management.
Testing: Unit tests for controllers and services using JUnit and Mockito.

Technology Stack

Java 21
Spring Boot
Spring Data JPA
Spring Security
Spring AOP
Spring Cache
H2 Database (In-memory for development)
Maven (Build tool)
JUnit 5 and Mockito (Testing)
Lombok (Reduce boilerplate code)