- Spring Cloud - Discussion
- Spring Cloud - Useful Resources
- Spring Cloud - Quick Guide
- Distributed Logging using ELK and Sleuth
- Streams with Apache Kafka
- Spring Cloud - Gateway
- Circuit Breaker using Hystrix
- Spring Cloud - Load Balancer
- Synchronous Communication with Feign
- Service Discovery Using Eureka
- Dependency Management
- Spring Cloud - Introduction
- Spring Cloud - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Spring Cloud - Dependency Management
In this chapter, we will build our very first apppcation using Spring Cloud. Let s go over the project structure and the dependency setup for our Spring Cloud Apppcation while using Spring Boot as the base framework.
Core Dependency
Spring Cloud group has multiple packages psted as dependency. In this tutorial, we will be using multiple packages from the Spring Cloud group. To avoid any compatibipty issue between these packages, let us use Spring Cloud dependency management POM, given below −
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR8</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
The Gradle user can achieve the same by using the following −
buildscript { dependencies { classpath "io.spring.gradle:dependency-management-plugin:1.0.10.RELEASE" } } apply plugin: "io.spring.dependency-management" dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies: Hoxton.SR8 )" } }
Project Architecture and Structure
For this tutorial, we will use the case of a Restaurant −
Restaurant Service Discovery − Used for registering the service address.
Restaurant Customer Service − Provides Customer information to the cpent and other services.
Restaurant Service − Provides Restaurant information to the cpent. Uses Customer service to get city information of the customer.
Restaurant Gateway − Entry point for our apppcation. However, we will use this only once in this tutorial for simppcity sake.
On a high level, here is the project architecture −
And we will have the following project structure. Note that we will look at the files in the upcoming chapters.
Project POM
For simppcity sake, we will be using Maven-based builds. Below is the base POM file, which we will use for this tutorial.
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tutorials.point</groupId> <artifactId>spring-cloud-eureka-cpent</artifactId> <version>1.0</version> <packaging>jar</packaging> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.4.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Points to note −
The POM dependency management section almost includes all the projects which we require.We will add the dependency section as and when we require.
We will use Spring Boot as the base Framework for the development of our apppcation and that is why you see it psted as a dependency.