Scaffolds a conventional Spring Boot 3.3.13 application with Java 17, including test coverage, database connectivity, and template engine support.
The project is structured as a reusable template with .keepme files in all empty directories.
- Build: Maven with Spring Boot parent POM 3.3.13
- Java: 17 (configured via
java.versionproperty only) - SDKMAN:
.sdkmanrcconfigures Java17.0.17-temand Maven 3.9.11 - GAV:
com.ericbouchut.java.springboot:springboot-ecf1:0.0.1-SNAPSHOT
- Testing: JUnit 5, JaCoCo (0.8.10), Surefire (3.0.0)
- Data: Spring Data JPA, MySQL Connector J 8.4.0
- View: Thymeleaf with Spring integration
- Validation: Bean Validation (Hibernate Validator)
- API Documentation: SpringDoc OpenAPI 2.6.0 (Swagger UI) - Do not upgrade to 3.x
- Utilities: Lombok with annotation processor enabled
src/
├── main/
│ ├── java/com/ericbouchut/java/springboot/ecf1/
│ │ ├── Application.java # @SpringBootApplication entry point
│ │ ├── controller/ # REST/MVC controllers (.keepme)
│ │ ├── service/ # Business logic layer (.keepme)
│ │ ├── repository/ # Data access layer (.keepme)
│ │ ├── model/ # Domain entities (.keepme)
│ │ ├── dto/ # Data Transfer Objects (.keepme)
│ │ ├── config/ # Configuration classes (.keepme)
│ │ ├── exception/ # Custom exceptions (.keepme)
│ │ └── util/ # Utility classes (.keepme)
│ └── resources/
│ ├── application.yaml # MySQL on port 3384, JPA/Thymeleaf config
│ ├── static/ # Static assets (.keepme)
│ └── templates/ # Thymeleaf templates (.keepme)
└── test/
└── java/com/ericbouchut/java/springboot/ecf1/
└── ApplicationTests.java # Context load test
The project follows the most common Spring Boot naming conventions using singular package names (controller, service, repository, model, dto, config, exception, util). All empty directories contain .keepme files to ensure they are tracked in version control, making this repository suitable for use as a project template.
MySQL connection configured for local development on non-standard port:
spring:
application:
name: springboot-ecf1
datasource:
url: jdbc:mysql://localhost:3380/ecf1?serverTimezone=UTC
username: root
password:
jpa:
hibernate:
ddl-auto: update
show-sql: true