How tranbaotri2412-star/spring-7-rest-mvc-68-jpa-validation-error-msg works
This is a Spring MVC REST example for managing beers and customers. Clients send CRUD requests to the resource controllers, which delegate to service APIs and return DTOs or HTTP status responses. The service layer has in-memory and JPA-backed implementations; the latter maps DTOs to entities and uses Spring Data repositories. Bootstrap data and SQL migrations support initializing and evolving the database. The source index and excerpts establish these components, but do not show how the application selects a service implementation or configures its database.
Main entry points: BootstrapData.java Bootstrap Data · BeerController.java Beer Controller · CustomerController.java Customer Controller · BeerRepository.java Beer Repository
Components 23
REST API
- Beer Controller
src/main/java/guru/springframework/spring7restmvc/controller/BeerController.java - Customer Controller
src/main/java/guru/springframework/spring7restmvc/controller/CustomerController.java - Not Found Error
src/main/java/guru/springframework/spring7restmvc/controller/NotFoundException.java - Error Responses
src/main/java/guru/springframework/spring7restmvc/controller/CustomErrorController.java
Domain and Mapping
- Beer DTO
src/main/java/guru/springframework/spring7restmvc/model/BeerDTO.java - Customer DTO
src/main/java/guru/springframework/spring7restmvc/model/CustomerDTO.java - Beer Entity
src/main/java/guru/springframework/spring7restmvc/entities/Beer.java - Customer Entity
src/main/java/guru/springframework/spring7restmvc/entities/Customer.java - Beer Style
src/main/java/guru/springframework/spring7restmvc/model/BeerStyle.java - Beer Mapper
src/main/java/guru/springframework/spring7restmvc/mappers/BeerMapper.java - Customer Mapper
src/main/java/guru/springframework/spring7restmvc/mappers/CustomerMapper.java
Service Layer
- Beer Service API
src/main/java/guru/springframework/spring7restmvc/services/BeerService.java - Beer Memory Service
src/main/java/guru/springframework/spring7restmvc/services/BeerServiceImpl.java - Beer JPA Service
src/main/java/guru/springframework/spring7restmvc/services/BeerServiceJPA.java - Customer Service API
src/main/java/guru/springframework/spring7restmvc/services/CustomerService.java - Customer Memory Service
src/main/java/guru/springframework/spring7restmvc/services/CustomerServiceImpl.java - Customer JPA Service
src/main/java/guru/springframework/spring7restmvc/services/CustomerServiceJPA.java
Persistence
- Bootstrap Data
src/main/java/guru/springframework/spring7restmvc/bootstrap/BootstrapData.java - Beer Repository
src/main/java/guru/springframework/spring7restmvc/repositories/BeerRepository.java - Customer Repository
src/main/java/guru/springframework/spring7restmvc/repositories/CustomerRepository.java - Relational Database
- Database Migrations
src/main/resources/db.migration/V1__init-postgresql-database.sql
Other components
- API Client
Connections 32
- API Client → Beer Controller: sends requests
src/main/java/guru/springframework/spring7restmvc/controller/BeerController.java - API Client → Customer Controller: sends requests
src/main/java/guru/springframework/spring7restmvc/controller/CustomerController.java - Beer Controller → Beer Service API: calls
src/main/java/guru/springframework/spring7restmvc/controller/BeerController.java - Customer Controller → Customer Service API: calls
src/main/java/guru/springframework/spring7restmvc/controller/CustomerController.java - Beer Controller → Not Found Error: throws
src/main/java/guru/springframework/spring7restmvc/controller/BeerController.java - Customer Controller → Not Found Error: throws
src/main/java/guru/springframework/spring7restmvc/controller/CustomerController.java - Beer Controller → Beer DTO: accepts and returns
src/main/java/guru/springframework/spring7restmvc/controller/BeerController.java - Customer Controller → Customer DTO: accepts and returns
src/main/java/guru/springframework/spring7restmvc/controller/CustomerController.java - Beer Memory Service → Beer Service API: implements
src/main/java/guru/springframework/spring7restmvc/services/BeerServiceImpl.java - Beer JPA Service → Beer Service API: implements
src/main/java/guru/springframework/spring7restmvc/services/BeerServiceJPA.java - Customer Memory Service → Customer Service API: implements
src/main/java/guru/springframework/spring7restmvc/services/CustomerServiceImpl.java - Customer JPA Service → Customer Service API: implements
src/main/java/guru/springframework/spring7restmvc/services/CustomerServiceJPA.java - Beer Memory Service → Beer DTO: stores in memory
src/main/java/guru/springframework/spring7restmvc/services/BeerServiceImpl.java - Beer JPA Service → Beer Mapper: maps through
src/main/java/guru/springframework/spring7restmvc/services/BeerServiceJPA.java - Beer JPA Service → Beer Repository: uses
src/main/java/guru/springframework/spring7restmvc/services/BeerServiceJPA.java - Customer JPA Service → Customer Mapper: maps through
src/main/java/guru/springframework/spring7restmvc/services/CustomerServiceJPA.java - Customer JPA Service → Customer Repository: uses
src/main/java/guru/springframework/spring7restmvc/services/CustomerServiceJPA.java - Beer Mapper → Beer Entity: maps
src/main/java/guru/springframework/spring7restmvc/mappers/BeerMapper.java - Beer Mapper → Beer DTO: maps
src/main/java/guru/springframework/spring7restmvc/mappers/BeerMapper.java - Customer Mapper → Customer Entity: maps
src/main/java/guru/springframework/spring7restmvc/mappers/CustomerMapper.java - Customer Mapper → Customer DTO: maps
src/main/java/guru/springframework/spring7restmvc/mappers/CustomerMapper.java - Beer Repository → Beer Entity: persists
src/main/java/guru/springframework/spring7restmvc/repositories/BeerRepository.java - Customer Repository → Customer Entity: persists
src/main/java/guru/springframework/spring7restmvc/repositories/CustomerRepository.java - Beer Entity → Beer Style: uses
src/main/java/guru/springframework/spring7restmvc/entities/Beer.java - Beer DTO → Beer Style: uses
src/main/java/guru/springframework/spring7restmvc/model/BeerDTO.java - Bootstrap Data → Beer Repository: seeds
src/main/java/guru/springframework/spring7restmvc/bootstrap/BootstrapData.java - Bootstrap Data → Customer Repository: seeds
src/main/java/guru/springframework/spring7restmvc/bootstrap/BootstrapData.java - Bootstrap Data → Beer Entity: creates
src/main/java/guru/springframework/spring7restmvc/bootstrap/BootstrapData.java - Bootstrap Data → Customer Entity: creates
src/main/java/guru/springframework/spring7restmvc/bootstrap/BootstrapData.java - Beer Repository → Relational Database: reads and writes
- Customer Repository → Relational Database: reads and writes
- Database Migrations → Relational Database: defines schema