Skip to content

KnowHowSpringBoot/quickstart-jpa-jwt-secured

Repository files navigation

JWT Auth Example

JWT-based Spring security REST API.

Technology stack

java 21, Spring Boot, JPA, Security

Prerequisites

The following items should be installed in your system:

Database configuration

Application uses a MySQL as a persistent storage. Options to get it up:

  1. Use remote existing mysql. It is needed to specify the path in configs.
  2. Start local mysql in docker docker-compose -f docker-compose.dev.yml up -d

Running locally

This application is a Spring Boot application built using Maven. You can build a jar file and run it from the command line:

git clone https://github.com/KnowHowSpringBoot/quickstart-jpa-jwt-secured.git
cd quickstart-jpa-jwt-secured
./mvnw package
java -jar target/*.jar

You might also want to use Maven's spring-boot:run goal - applications run in an exploded form, as they do in your IDE:

./mvnw spring-boot:run -Dspring-boot.run.profiles=local -P dev

Now you can access to the Swagger UI here: http://localhost:8080/swagger-ui.html

Working with Application in your IDE

  1. On the command line
git clone https://github.com/KnowHowSpringBoot/quickstart-jpa-jwt-secured.git
  1. Inside IDE

In the main menu, choose File -> Open and select the Application pom.xml. Click on the Open button. Activate "local" profile in the Run settings or set it via environment variables. instruction Wait to indexing completion and push the green "play" button.

  1. Navigate to Swagger UI

Visit http://localhost:8080/swagger-ui.html in your browser.

Code conventions

The code follows Google Code Conventions. Code quality is measured by:

Tests

This project has standard JUnit tests. To run them execute this command:

./mvnw test

It is mandatory to keep test code coverage not below 80 percents and cover all business logic and edge cases.

Versioning

Project uses a three-segment CalVer scheme, with a short year in the major version slot, short month in the minor version slot, and micro/patch version in the third and final slot.

YY.MM.MICRO
  1. YY - short year - 6, 16, 106
  2. MM - short month - 1, 2 ... 11, 12
  3. MICRO - "patch" segment