Layer Architecture
- Structur of layer Architecture
src/
└── com/example/app/
├── controller/ # Handles HTTP requests (UI layer)
│ └── UserController.java
├── service/ # Business logic
│ └── UserService.java
├── repository/ # Data access
│ └── UserRepository.java
└── model/ # Entities / DTOs
└── User.java
Onion Architecture
-
Structur of Onion Architecture
src/
└── com/example/app/
├── domain/
│ ├── model/ # Core entities
│ │ └── User.java
│ ├── port/ # Interfaces (like UserRepository)
│ │ └── UserRepository.java
│ └── usecase/ # Business use cases
│ └── RegisterUserUseCase.java
├── infrastructure/
│ └── repository/ # Implements ports
│ └── InMemoryUserRepository.java
└── web/
└── controller/ # CLI / REST / UI
└── UserController.java
Clean Architecture
- Structur of clean Architecture
src/
└── com/example/app/
├── entities/ # Enterprise-wide business rules
│ └── User.java
├── usecases/ # Application-specific business logic
│ └── RegisterUser.java
├── interfaceadapters/ # DTOs, Presenters, Gateways
│ ├── controller/
│ │ └── UserController.java
│ └── repository/
│ └── UserRepositoryImpl.java
└── frameworks/
├── db/
│ └── UserJpaRepository.java
└── web/
└── SpringBootApp.java
Hexagonal Architecture
- Structur of clean Architecture
src/
└── com/example/app/
├── application/ # Core logic (use cases)
│ └── RegisterUser.java
├── domain/ # Domain models & business rules
│ └── User.java
├── ports/ # Interfaces (input/output)
│ ├── input/
│ │ └── RegisterUserInputPort.java
│ └── output/
│ └── UserRepositoryPort.java
├── adapters/ # Implementations of ports
│ ├── inbound/ # Web, CLI, etc.
│ │ └── RestControllerAdapter.java
│ └── outbound/ # DB, email, etc.
│ └── JpaUserRepositoryAdapter.java
└── config/ # App wiring (DI, configs)
└── ApplicationConfig.java