This project provides a weather API developed using Java 17 and Spring Boot 3.0 technologies. The project facilitates API documentation using OpenAPI documentation and manages data using Spring Data JPA with an H2 in-memory database.
In addition, the project features Spring Cache to cache data and Spring Validation to validate incoming requests.
Another feature of the project is rate limiting support, which controls the number and frequency of requests made to the API to prevent spam requests and improve API performance.
Docker and Docker Compose are used to provide fast and easy deployment of the project. Github Actions is used to automatically run tests and create a Docker image for the project.
Finally, Prometheus and Grafana are used to monitor the performance and status of the API. This provides tools to detect real-time system performance and issues.
-
Java 17: This project uses the latest version of the Java language.
-
Spring Boot 3.0: Spring Boot is a Java web application framework that enables fast application development.
-
OpenAPI Documentation: A documentation standard that facilitates the documentation and sharing of APIs.
-
Spring Data JPA: This technology is used to perform object-relational mapping (ORM) in Spring applications.
-
H2 In Memory Database: This project manages data using the H2 database. H2 is a lightweight, in-memory database.
-
Integration Test: These tests are used to verify the integration between different modules. They typically use a real database and data to ensure that the tested code works with other components. In this project, integration tests can be used to verify the integration of Spring Boot and Restful API.
-
Unit Test: These tests are used to test a single code unit, usually a method or function, by verifying that the input and output values are correct. In this project, unit tests can be used to test the features provided by Spring Boot and Spring Data JPA.
-
Repository Test: These tests are used to verify that the application interacts correctly with the database and that data is stored correctly. In this project, repository tests can be used to verify that the H2 In Memory Database and Spring Data JPA work correctly.
-
Restful API: RESTful APIs are a type of application programming interface (API) that enables the sharing of services over HTTP.
-
Maven: Maven is a tool used to manage Java project configuration and dependencies.
-
Docker: Docker is a software technology used to virtualize and deploy applications. Docker is used in this project.
-
Docker Compose: Docker Compose is a tool used to run multiple Docker applications together.
-
Prometheus: Prometheus is a time-series database and monitoring tool.
-
Grafana: Grafana is a data visualization and analysis tool.
-
Resilience4j: Resilience4j is a fault tolerance library designed for Java applications. It includes features such as rate limiting, circuit breaking, and retrying to improve application stability and resilience.
-
Spring Cache: Spring Cache is a caching abstraction layer that provides cache support for Spring applications. It helps improve application performance by reducing the number of expensive operations needed to retrieve data from a data source.