Progetto multimodulo con Spring Boot

1. Panoramica

In questo breve tutorial, mostreremo come creare un progetto multimodulo con Spring Boot .

Per prima cosa, creeremo un jar della libreria che non è un'applicazione in sé, quindi creeremo un'applicazione che utilizza la nostra libreria.

Per un'introduzione a Spring Boot , fare riferimento a questo articolo.

2. Configurazione

Per impostare il nostro progetto multi-modulo, creiamo un semplice modulo utilizzando il packaging pom per aggregare la nostra libreria e i moduli dell'applicazione nella nostra configurazione Maven:

com.baeldung parent-multi-module pom

Creeremo due directory all'interno del nostro progetto che divideranno il modulo dell'applicazione dal modulo jar della libreria .

Dichiariamo i nostri moduli nel pom.xml :

 library application 

3. Library Jar

Per il nostro modulo libreria , useremo il pacchetto jar :

com.baledung.example library jar

Poiché vogliamo sfruttare la gestione delle dipendenze di Spring Boot , useremo spring-boot-starter-parent come progetto genitore, avendo cura di impostarea un valore vuoto in modo che Maven risolva il genitore pom.xml dai repository:

 org.springframework.boot spring-boot-starter-parent 2.2.6.RELEASE  

Si noti che se abbiamo un nostro progetto padre, possiamo invece importare la gestione delle dipendenze come distinta base (BOM) nellasezione del pom.xml :

   org.springframework.boot spring-boot-dependencies pom 2.2.6.RELEASE import   

Infine, le dipendenze iniziali saranno abbastanza semplici:

  org.springframework.boot spring-boot-starter  

In questo modulo, il plugin Spring Boot non è necessario perché la sua funzione principale è creare un über-jar eseguibile , che non vogliamo e non abbiamo bisogno per una libreria.

Dopodiché, siamo pronti per sviluppare un componente di servizio che verrà fornito dalla libreria :

@Service public class EvenOddService { public String isEvenOrOdd(Integer number) { return number % 2 == 0 ? "Even" : "Odd"; } }

4. Progetto applicativo

Come il nostro modulo libreria , il nostro modulo applicativo utilizzerà il packaging jar :

com.baeldung.example application jar

E trarremo vantaggio dalla gestione delle dipendenze di Spring Boot come prima:

 org.springframework.boot spring-boot-starter-parent 2.2.6.RELEASE  

Oltre alla dipendenza di avvio di Spring Boot, includeremo il nostro jar della libreria creato nella sezione precedente :

  org.springframework.boot spring-boot-starter-web   com.baeldung.example library ${project.version}   

Infine, utilizzeremo il plug-in Spring Boot :

   org.springframework.boot spring-boot-maven-plugin   

Ci sono diversi motivi utili per utilizzare il plugin menzionato sopra in questo luogo.

Innanzitutto, fornisce un risolutore di dipendenze integrato che imposta il numero di versione in modo che corrisponda alle dipendenze di Spring Boot .

In secondo luogo, cerca il metodo principale da contrassegnare come classe eseguibile.

Infine, e forse la cosa più importante, raccoglie tutti i barattoli sul classpath e crea un unico über-jar eseguibile .

Ora che tutto è pronto per scrivere la nostra classe applicativa e per andare dritti al punto, implementiamo un controller all'interno della classe applicativa principale :

@SpringBootApplication(scanBasePackages = "com.baeldung") @RestController public class EvenOddApplication { private EvenOddService evenOddService; // constructor @GetMapping("/validate/") public String isEvenOrOdd( @RequestParam("number") Integer number) { return evenOddService.isEvenOrOdd(number); } public static void main(String[] args) { SpringApplication.run(EvenOddApplication.class, args); } }

5. conclusione

In questo articolo, abbiamo esplorato come implementare e configurare un progetto multimodulo e creare un jar di libreria da solo con Spring Boot .

Come sempre, è possibile trovare esempi di codice su GitHub.