How osamuharu/spring-boot-template works
This is a modular Spring Boot REST API for authentication, user administration, file upload/metadata, email notifications, and JWT security. The principal workflow is client request → controller → application service/use case → persistence or external integration → API response. Registration also publishes an email event, while authenticated requests pass through JWT security. The tree supports the major module boundaries; several implementation links are therefore shown only where source or explicit adapter structure supports them.
Components 24
API Layer
- Auth Controller
auth/src/main/java/com/osamuharu/auth/presentation/controllers/AuthController.java - User Controller
user/src/main/java/com/osamuharu/user/presentation/controllers/UserController.java - File Controller
file/src/main/java/com/osamuharu/file/presentation/controllers/FileController.java
Identity & Security
- Auth Service
auth/src/main/java/com/osamuharu/auth/application/services/AuthService.java - Register Use Case
auth/src/main/java/com/osamuharu/auth/application/useCases/RegisterUseCase.java - Login Use Case
auth/src/main/java/com/osamuharu/auth/application/useCases/LoginUseCase.java - Logout Use Case
auth/src/main/java/com/osamuharu/auth/application/useCases/LogoutUseCase.java - JWT Security
security/src/main/java/com/osamuharu/security/filters/JwtFilter.java - Token Adapter
security/src/main/java/com/osamuharu/security/adapters/JwtAdapter.java - User Security Loader
security/src/main/java/com/osamuharu/security/adapters/UserDetailServiceAdapter.java
User Domain
- User Service
user/src/main/java/com/osamuharu/user/application/services/UserService.java - User Use Cases
user/src/main/java/com/osamuharu/user/application/useCases/CreateUserUseCase.java - User Repository
user/src/main/java/com/osamuharu/user/domain/repositories/UserRepository.java - User Store
user/src/main/java/com/osamuharu/user/infrastructure/persistence/repositories/UserJpaRepository.java
File Domain
- File Service
file/src/main/java/com/osamuharu/file/application/services/FileService.java - File Metadata Service
file/src/main/java/com/osamuharu/file/application/services/FileMetadataService.java - File Repository
file/src/main/java/com/osamuharu/file/domain/repositories/FileRepository.java - File Metadata Store
file/src/main/java/com/osamuharu/file/infrastructure/persistence/repositories/FileJpaRepository.java - Cloudinary Storage
file/src/main/java/com/osamuharu/file/application/services/impl/CloudinaryServiceImpl.java
Platform Services
- Email Event Handler
notification/src/main/java/com/osamuharu/notification/mailer/handler/EmailNotificationHandler.java - Email Sender
notification/src/main/java/com/osamuharu/notification/mailer/service/EmailSenderService.java - API Error Handling
shared/src/main/java/com/osamuharu/shared/exceptions/GlobalExceptionHandler.java
Other components
- API Client
- SMTP Provider
Connections 25
- API Client → Auth Controller: sends auth request
- API Client → User Controller: sends user request
- API Client → File Controller: sends file request
- Auth Controller → Auth Service: handles auth
- User Controller → User Service: handles users
- File Controller → File Service: uploads file
- File Controller → File Metadata Service: reads metadata
- Auth Service → Register Use Case: registers user
- Auth Service → Login Use Case: authenticates user
- Auth Service → Logout Use Case: logs out user
- Auth Service → Token Adapter: generates token
- Auth Service → Email Event Handler: publishes email event
- User Service → User Use Cases: executes mutation
- User Service → User Repository: queries users
- User Repository → User Store: persists users
- File Metadata Service → File Repository: queries metadata
- File Repository → File Metadata Store: persists metadata
- File Service → Cloudinary Storage: stores content
- Email Event Handler → Email Sender: dispatches email
- Email Sender → SMTP Provider: sends message
- JWT Security → Token Adapter: validates token
- User Security Loader → User Repository: loads credentials
- Auth Controller → API Error Handling: formats failures
- User Controller → API Error Handling: formats failures
- File Controller → API Error Handling: formats failures