How vanthang-lvt/vti_clean_architecture works
This is a multi-module Spring Boot customer REST application organized around Clean Architecture/DDD, with a separate JWT authentication module. The customer workflow accepts HTTP requests, delegates CRUD operations through a service implementation to a JPA repository, and returns customer data. Authentication separately issues tokens and filters protected requests. The README documents the database mapping and module roles; unsampled security wiring and startup configuration are represented only where the source index or README supports them.
Main entry points: JwtAuthenticationController.java Token Endpoint · CustomerRepository.java Customer Repository · JwtRequestFilter.java JWT Request Filter · CustomerService.java Customer Service
Components 18
Customer API
- Customer Controller
Controller/src/main/java/de/jenshardt/multimavendemo/customer/controller/CustomerController.java
Customer Core
- Customer Service
Domain/src/main/java/de/jenshardt/multimavendemo/customer/domain/service/CustomerService.java - Customer Service Impl
Service/src/main/java/de/jenshardt/multimavendemo/customer/service/implementation/CustomerServiceImpl.java - Customer Repository
Domain/src/main/java/de/jenshardt/multimavendemo/customer/domain/repository/CustomerRepository.java - Customer Aggregate
Domain/src/main/java/de/jenshardt/multimavendemo/customer/domain/aggregate/Customer.java
Application Runtime
- Spring Boot App
Application/src/main/java/de/jenshardt/multimavendemo/customer/CustomerApplication.java - Startup Seed
Application/src/main/java/de/jenshardt/multimavendemo/customer/config/LoadDatabase.java
JWT Authentication
- Token Endpoint
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtAuthenticationController.java - Login Request
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtRequest.java - Token Response
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtResponse.java - User Details
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtUserDetailsService.java - JWT Utility
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtTokenUtil.java - Security Config
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/WebSecurityConfig.java - JWT Request Filter
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtRequestFilter.java - Unauthorized Handler
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtAuthenticationEntryPoint.java
Other components
- API Client
- JPA Database
- Auth Client
Connections 16
- API Client → Customer Controller: sends requests
README.md - Customer Controller → Customer Service: calls CRUD
Controller/src/main/java/de/jenshardt/multimavendemo/customer/controller/CustomerController.java - Customer Service Impl → Customer Service: implements
Service/src/main/java/de/jenshardt/multimavendemo/customer/service/implementation/CustomerServiceImpl.java - Customer Service Impl → Customer Repository: queries and saves
Service/src/main/java/de/jenshardt/multimavendemo/customer/service/implementation/CustomerServiceImpl.java - Customer Repository → Customer Aggregate: maps entities
Domain/src/main/java/de/jenshardt/multimavendemo/customer/domain/repository/CustomerRepository.java - Customer Repository → JPA Database: runs persistence
README.md - Startup Seed → Customer Service: creates sample customers
Application/src/main/java/de/jenshardt/multimavendemo/customer/config/LoadDatabase.java - Auth Client → Token Endpoint: posts credentials
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtAuthenticationController.java - Token Endpoint → Login Request: accepts body
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtAuthenticationController.java - Token Endpoint → User Details: loads user
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtAuthenticationController.java - Token Endpoint → JWT Utility: generates token
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtAuthenticationController.java - Token Endpoint → Token Response: returns token
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtAuthenticationController.java - Security Config → JWT Request Filter: registers filter
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/WebSecurityConfig.java - Security Config → Unauthorized Handler: configures failures
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/WebSecurityConfig.java - JWT Request Filter → JWT Utility: validates token
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtRequestFilter.java - JWT Request Filter → User Details: loads user
AuthServer/src/main/java/de/jenshardt/multimavendemo/authentication/JwtRequestFilter.java