A core Spring Boot parent dependency that provides a complete foundation for Spring Boot applications with common dependencies and configurations.
Spring App Core is a Maven multi-module project that provides a standardized foundation for Spring Boot applications. It includes pre-configured dependencies, security settings, database configurations, and common utilities to accelerate development of new Spring Boot applications.
spring-app-core/
├── core-commons/ # Core common library with shared utilities
├── core-ui/ # UI components
├── demo-app/ # Example application demonstrating usage
├── pom.xml # Parent POM with common dependencies
└── README.md # This file
- core-commons: Contains shared utilities, configurations, and common Spring Boot components
- core-ui: UI-related components and frontend assets
- demo-app: Example application showing how to use the core modules
Spring Boot
3.5.4Spring Security
Spring Data JPA & JDBC
Spring Data REST
Spring Boot Actuator
Kotlin
2.1.20Java
17
- MySQL (primary database)
- H2 (for testing)
- JPA/Hibernate with automatic schema updates
- Connection pooling with HikariCP
- Spring Security integration
- Session management
- JDBC-based session storage
- Spring Boot Actuator for health checks and metrics
- Comprehensive logging configuration
- Error handling and custom error pages
- Java 17 or higher
- Maven 3.6+
- MySQL (for production) or H2 (for development)
The application uses the following environment variables (with defaults):
# Database Configuration
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USERNAME=testsys
MYSQL_PASSWORD=p@ssw0rd
# Server Configuration
CONTEXT_PATH=/
LOG_FILE=./logs/server.log
-
Clone the repository
git clone https://github.com/trik-testsys/spring-app-core.git cd spring-app-core
-
Build the project
./mvnw clean install
-
Run the demo application
./mvnw -pl demo-app spring-boot:run
-
Access the application
- Main application: http://localhost:8888
- Actuator endpoints: http://localhost:8888/actuator
<parent>
<groupId>trik.testsys</groupId>
<artifactId>spring-app-core</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<dependency>
<groupId>trik.testsys.sac</groupId>
<artifactId>core-commons</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>trik.testsys.sac.application.TSApp</mainClass>
</configuration>
</plugin>
</plugins>
</build>
The application is pre-configured for MySQL with the following settings:
spring:
datasource:
url: jdbc:mysql://localhost:3306/testsys_db
username: testsys
password: p@ssw0rd
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
open-in-view: on
- Port: 8888
- Context path: Configurable via
CONTEXT_PATH
environment variable - Session timeout: 3 hours
- Log file: Configurable via
LOG_FILE
environment variable - Log retention: 31 days
- Default log level: DEBUG for
trik.testsys
packages
# Build all modules
./mvnw clean install
# Build specific module
./mvnw -pl core-commons clean install
# Run tests
./mvnw test
The project includes comprehensive test coverage. Run tests with:
./mvnw test
- Kotlin code style: Official
- Java version: 17
- Kotlin JVM target: 1.8
The project includes GitHub Actions workflows for:
- Build and Test: Automated builds and testing
- Release Publish: Automated release artifacts publishing to maven-repo
- Release Version Update: Automated version bumping for patches and releases, also creating release tags
- Patch Version Update: Automated version bumping for releasing patch artifacts, also creating release tags
- Snapshot Publish: Automated snapshot artifacts publishing to maven-repo
- Fork the repository
- Create a feature branch (
git checkout -b dev/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin dev/amazing-feature
) - Open a Pull Request
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Roman Shishkin - Maintainer - sh1sh4k1n9
- Vyacheslav Buchin - Contributor - ch3zych3z
- Viktor Karasev - Contributor - KarasssDev
For support and questions, please contact the development team or create an issue in the GitHub repository.