Configuration en MicroService
Nous utiliserons Maven pour gérer nos services et les librairies externes utilisées.
Découpage du projet
Comme evoqué quand le chapitre précédent nous allons déployer 3 microservices. Cela signifie donc 3 projets Maven indépendants. Cependant afin de faciliter l'utilisation des librairies nous allons regrouper ces 3 projets sous un projet parent prixbanque
POM parent
Propriétés
<properties>
<microservice.version>0.0.1-SNAPSHOT</microservice.version>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<spring.boot.dependencies.version>2.7.4</spring.boot.dependencies.version>
</properties>
Microservice
Le pom parent déclare également les 3 microservices que nous allons développer ultérieurement.
<modules>
<module>bankaccount</module>
<module>registration</module>
<module>gateway</module>
</modules>
On doit également ajouter ces modules comme dépendance du projet. Ainsi dans le bloc <dependencyManagement></dependencyManagement>
nous rajoutons
<!-- MicroServices-->
<dependency>
<groupId>adriencaubel.fr</groupId>
<artifactId>registration</artifactId>
<version>${microservice.version}</version>
</dependency>
<dependency>
<groupId>adriencaubel.fr</groupId>
<artifactId>connection</artifactId>
<version>${microservice.version}</version>
</dependency>
<dependency>
<groupId>adriencaubel.fr</groupId>
<artifactId>banktransfert</artifactId>
<version>${microservice.version}</version>
</dependency>
Les autres dépendances
<!-- Microservice -->
...
<!-- Spring -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.dependencies.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.dependencies.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.dependencies.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>${spring.boot.dependencies.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>3.1.4</version>
</dependency>
<!-- Base de données -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.5.0</version>
<scope>runtime</scope>
</dependency>
<!-- Utility -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<!-- Tests -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>1.9.1</version>
<scope>test</scope>
</dependency>
Le build
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.dependencies.version}</version>
</plugin>
</plugins>
</build>