Spring Boot Web Service Starter Project
The Spring Boot web services starter project provides a foundation to rapidly construct a RESTful web services application.
Features
RESTful Web Service Family
The project contains examples of
Create,
Read,
Update, and
Delete web services. The project illustrates the use of
@ExceptionHandler
annotated methods to manage web service responses when common exceptional conditions arise.
Business Services
The project demonstrates the encapsulation of business behaviors into domain-specific, Spring-managed components annotated with
@Service
.
Spring Data JPA
The project shows the use of Spring Data JPA repositories,
@Repository
, for data access and management. Illustrates the
@Entity
annotation and other JPA entity model annotations for attribute and relationship mapping.
HSQLDB In-Memory Database
The project illustrates how to use the HSQLDB in-memory database which is useful for rapid prototyping or unit test execution in a continuous integration environment.
MySQL Database
In addition to HSQLDB support, the project also illustrates integration with MySQL.
Liquibase Database Migration
The project demonstrates the use of
Liquibase change logs to automatically create and update the database structure and initial content. The Liquibase change logs have been tested with the HSQLDB and MySQL database engines.
Transaction Management
The project contains examples of the
@Transactional
annotation on business service methods.
Cache Management
The project contains examples of the
@Cacheable
,
@CachePut
, and
@CacheEvict
annotations on business service methods.
Scheduled (Batch) Processes
The project illustrates the use of the
@Scheduled
annotation and provides examples of cron, fixed rate, and fixed delay schedules.
Asynchronous Processes
The project illustrates the use of the
@Async
annotation and provides examples of asynchronous methods with and without return values.
Spring Security
The project provides examples of Spring Security integration. The web service endpoints are secured using Basic Auth, backed by database authentication and authorization. The project illustrates declarative authorization for resources by role.
Spring Profiles
The project demonstrates how to use Spring Profiles to activate (or deactivate) application components and configuration. The profiles illustrated are: batch, hsqldb, mysql, and docs.
Unit Tests
The project contains unit test examples for standard components such as business services or batch beans and examples for the web service endpoints using Mock objects. Perform complete end-to-end testing with Spring MVC mocking or leverage Mockito to stub or spy business components.
Actuator Monitoring and Management
The project illustrates the use of Spring Boot Actuator for application monitoring and management. The application demonstrates the recording of custom metrics and the creation of custom health checks. Also, custom Maven and Gradle project attributes are incorporated into the Actuator info endpoint.
API Documentation Generator
The project includes
Springfox Swagger integration to automatically generate API docs for the RESTful web service endpoints. This feature may be activated using the
"docs" Spring profile.
Executable Jar
The Maven and Gradle builds produce a fully executable Spring Boot Jar file. The Jar file may be executed directly from the command line without the
"java -jar" command and may be installed on Linux servers as a service.
Docker Support
The project ships with an example Dockerfile which creates a minimal, best practices Docker image for hosting Spring Boot Applications with OpenJDK. You can pull the latest Docker image from
DockerHub.
Technology Stack
- Spring Boot
- Spring Framework
- Spring Security
- Spring Data JPA
- Liquibase
- JUnit
- Mockito
- Maven
- Gradle
- HSQLDB
- MySQL