# Build and run the application
./gradlew bootRun
# Run tests
./gradlew test
# Build for production
./gradlew build- Clean Architecture implementation
- Spring Boot 4 with Java 25
- JWT Authentication with Spring Security
- Role-Based Access Control (Admin/User roles)
- Validation with proper HTTP status codes
- Admin User Initialization on startup
POST /api/auth/login
{
"email": "[email protected]",
"password": "admin123"
}GET /api/users- List all usersPOST /api/users- Create new userGET /api/users/{id}- Get user by IDPUT /api/users/{id}- Update userDELETE /api/users/{id}- Delete user
- Email:
[email protected] - Password:
admin123 - Role: ADMIN
- JWT Tokens for stateless authentication
- BCrypt password hashing
- Role-based authorization
- CSRF protection disabled for API
- Unit tests for business logic
- Integration tests for controllers
- Security tests for authentication/authorization
Presentation Layer → Application Layer → Domain Layer → Infrastructure Layer
- Presentation: Controllers, DTOs, API
- Application: Services, use cases
- Domain: Models, factories, repositories
- Infrastructure: Database, security, configuration
Edit application.properties for:
# Admin user
app.admin.enabled=true
app.admin.username=admin
app.admin.email[email protected]
# JWT settings
app.jwt.secret=yourSecureSecretKeyHere12345678901234567890123456789012
app.jwt.expiration=86400000./gradlew bootRun./gradlew build
java -jar build/libs/spring-web-0.0.1-SNAPSHOT.jar- Spring Boot 4
- Spring Security with JWT
- Jakarta Validation
- JUnit 5
- Mockito
- Change default admin password
- Configure proper JWT secret
- Set up HTTPS in production
- Implement proper logging
- Configure monitoring
Clean Architecture + Spring Boot = Maintainable & Scalable Applications 🚀