This is a demo application with Spring Boot with DDD architecture, MySQL 8, Spring Data JDBC, Flyway for database migration.
- Java 25
- Apache Maven 3.9.11
- Spring Boot 4.0 with Spring MVC
- Junit 5.13
- AssertJ: Fluent assertions, please use it instead of JUnit assertions.
- base package:
org.mvnsearch - RESTful API controller package:
org.mvnsearch.web.rest - project base test:
org.mvnsearch.ProjectBaseTest,new test class should extendorg.mvnsearch.ProjectBaseTest
The project adopts Domain Driven Design architecture, and the domain model is in org.mvnsearch.domain package.
- model package:
org.mvnsearch.domain.model - service package:
org.mvnsearch.domain.service - repository package:
org.mvnsearch.domain.repository - infrastructure package:
org.mvnsearch.domain.infra - implementation package for domain:
org.mvnsearch.domain.impl, and interface and implementation mapping as below:- service(repository or infra) interface:
org.mvnsearch.domain.service.XxxxService - service(repository or infra) implementation:
org.mvnsearch.domain.impl.service.XxxxServiceImpl
- service(repository or infra) interface:
- Main database: MySQL 8
- Database migration: Flyway 11 and migration script directory:
src/main/resources/db/migration - Database test: DbUnit with xml dataset, and dataset directory:
src/main/resources/db/dataset - Spring Data JDBC: ORM for database access with JPA annotations
- RESTful API controller base package:
org.mvnsearch.web.rest - Base URL:
/api/v1
- Build:
mvn -DskipTests package - Run:
mvn spring-boot:run
- Use jspecify to annotate nullable and non-nullable types:
org.jspecify.annotations.NonNullandorg.jspecify.annotations.Nullable - Use slf4j for logging
The project uses src/main/resources/application.properties as configuration file.