Skip to content

Spring Boot application with Redis in persistence layer

License

Notifications You must be signed in to change notification settings

andrei-punko/spring-boot-redis

Repository files navigation

Spring Boot application with Redis in persistence layer

Java CI with Maven Coverage Branches

Based on Spring Boot app template

Includes web-server on port 9080 with /api/v1/articles endpoint exposed.
Supports CRUD set of operations and R with pagination

Prerequisites:

  • Maven 3
  • JDK 21

How to build:

mvn clean install

Build Docker image with application inside:

docker build --no-cache ./ -t spring-boot-redis-app

Start application using starting script:

Use run-in-docker.bat script

Start application by running executable jar (Redis should be started before that manually):

java -jar target/spring-boot-redis-0.0.1-SNAPSHOT.jar \
 --spring.redis.host=localhost \
 --spring.redis.port=6379

Same thing but using Spring profile to determine properties (Redis should be started before that manually):

java -jar target/spring-boot-redis-0.0.1-SNAPSHOT.jar \
 --spring.profiles.active=dev

Start application using Maven (Redis should be started before that manually):

mvn spring-boot:run -Dspring-boot.run.arguments="\
 --spring.redis.host=localhost \
 --spring.redis.port=6379

Same thing but using Spring profile to determine properties (Redis should be started before that manually):

mvn spring-boot:run -Dspring-boot.run.arguments=--spring.profiles.active=dev

Start application using set of two Docker containers - one with Redis and another with application:

docker-compose up

Link for quick check:

http://localhost:9080/api/v1/articles

Swagger documentation:

http://localhost:9080/swagger-ui/index.html

Useful CURL commands:

New article addition:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -d '{ "title": "Some tittle", "text": "Some text", "summary": "bla-bla", "author": "Pushkin" }' -X POST http://localhost:9080/api/v1/articles

Get existing article:

curl -i http://localhost:9080/api/v1/articles/1

Update existing article:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -d '{ "title": "Another tittle" }' -X PATCH http://localhost:9080/api/v1/articles/2

Get all articles:

curl -i http://localhost:9080/api/v1/articles

Get list of articles with pagination support:

curl -i 'http://localhost:9080/api/v1/articles?size=2&page=4&sort=author.firstName,DESC'

Deletion of article:

curl -i -X DELETE http://localhost:9080/api/v1/articles/1

Run functional tests:

cd func-test
./gradlew clean build

Check functional test report here

About

Spring Boot application with Redis in persistence layer

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages