How bsejawal/crud works
This is a Spring Boot person-record CRUD API backed by an in-memory H2 database. A client sends HTTP requests to the person endpoints; the controller handles ordinary CRUD directly through the repository and delegates partial updates to the service, which maps the saved entity to a DTO. At startup, a loader reads bundled JSON and seeds the repository. The README documents H2 access; sampled code also shows timing advice for the annotated list endpoint. Unsampled configuration and logging behavior are not expanded beyond documented or indexed evidence.
Main entry points: PersonController.java Person Controller · PersonRepository.java Person Repository · DataLoader.java Startup Data Loader · PersonMapper.java Person Mapper
Components 14
HTTP API
- Person Controller
src/main/java/com/sejawal/crud/controller/PersonController.java - Person Service
src/main/java/com/sejawal/crud/service/PersonService.java
Person Domain
- Person DTO
src/main/java/com/sejawal/crud/dto/PersonDto.java - Person Mapper
src/main/java/com/sejawal/crud/mapper/PersonMapper.java - Person Entity
src/main/java/com/sejawal/crud/model/Person.java
Persistence and Seed Data
- Person Repository
src/main/java/com/sejawal/crud/repository/PersonRepository.java - H2 Database
src/main/resources/application.yml - Startup Data Loader
src/main/java/com/sejawal/crud/utils/DataLoader.java - Seed Person JSON
src/main/resources/data/person.json - Person DTO List
src/main/java/com/sejawal/crud/vo/PersonDtoList.java
Cross-Cutting
- Timing Annotation
src/main/java/com/sejawal/crud/annotation/TrackExecutionTime.java - Execution Timing Advice
src/main/java/com/sejawal/crud/advice/ExecutionTimeTrackerAdvice.java - Application Bootstrap
src/main/java/com/sejawal/crud/CrudApplication.java
Other components
- API Client
Connections 16
- API Client → Person Controller: sends requests
README.md - Person Controller → Person Repository: handles CRUD
src/main/java/com/sejawal/crud/controller/PersonController.java - Person Controller → Person Service: delegates patch
src/main/java/com/sejawal/crud/controller/PersonController.java - Person Service → Person Repository: loads and saves
src/main/java/com/sejawal/crud/service/PersonService.java - Person Service → Person Mapper: maps result
src/main/java/com/sejawal/crud/service/PersonService.java - Person Mapper → Person Entity: maps fields
src/main/java/com/sejawal/crud/mapper/PersonMapper.java - Person Mapper → Person DTO: maps fields
src/main/java/com/sejawal/crud/mapper/PersonMapper.java - Person Repository → Person Entity: stores entity
src/main/java/com/sejawal/crud/repository/PersonRepository.java - Person Repository → H2 Database: persists records
README.md - Startup Data Loader → Seed Person JSON: reads
src/main/java/com/sejawal/crud/utils/DataLoader.java - Startup Data Loader → Person DTO List: deserializes into
src/main/java/com/sejawal/crud/utils/DataLoader.java - Startup Data Loader → Person Mapper: converts records
src/main/java/com/sejawal/crud/utils/DataLoader.java - Startup Data Loader → Person Repository: saves seed data
src/main/java/com/sejawal/crud/utils/DataLoader.java - Person Controller → Timing Annotation: marks endpoint
src/main/java/com/sejawal/crud/controller/PersonController.java - Execution Timing Advice → Timing Annotation: intercepts methods
src/main/java/com/sejawal/crud/advice/ExecutionTimeTrackerAdvice.java - Application Bootstrap → Person Controller: enables web app