1. Panoramica
Quando creiamo un nuovo progetto Spring Boot, c'è un alto grado di flessibilità su come possiamo organizzare le nostre classi.
Tuttavia, ci sono alcuni consigli che dobbiamo tenere a mente.
2. Nessun pacchetto predefinito
Dato che le annotazioni Spring Boot come @ComponentScan , @EntityScan, @ConfigurationPropertiesScan e @SpringBootApplication utilizzano pacchetti per definire le posizioni di scansione, si consiglia di evitare di utilizzare il pacchetto predefinito, ovvero dovremmo sempre dichiarare il pacchetto nelle nostre classi .
3. Classe principale
L' annotazione @SpringBootApplication attiva la scansione dei componenti per il pacchetto corrente e i relativi sotto-pacchetti. Pertanto, un modo solido per andare è fare in modo che la classe principale del progetto risieda nel pacchetto di base .
Questo è configurabile e possiamo ancora individuarlo altrove specificando manualmente il pacchetto di base. Tuttavia, nella maggior parte dei casi, questa opzione è sicuramente più semplice.
Inoltre, un progetto basato su JPA dovrebbe avere alcune annotazioni aggiuntive sulla classe principale:
@SpringBootApplication(scanBasePackages = "example.baeldung.com") @EnableJpaRepositories("example.baeldung.com") @EntityScan("example.baeldung.com")
Inoltre, tieni presente che potrebbe essere necessaria una configurazione aggiuntiva.
4. Progettazione
Il design della struttura del pacchetto è indipendente da Spring Boot. Pertanto, dovrebbe essere imposto dai requisiti del nostro progetto.
Una strategia popolare è pacchetto per funzionalità , che migliora la modularità e consente la visibilità privata del pacchetto all'interno dei sotto-pacchetti.
Prendiamo, ad esempio, il progetto PetClinic. Questo progetto è stato realizzato dagli sviluppatori Spring per illustrare la loro visione su come dovrebbe essere strutturato un progetto Spring Boot comune.
È organizzato in modo pacchetto per funzionalità. Quindi, abbiamo il pacchetto principale, org.springframework.samples.petclinic e 5 sotto-pacchetti:
- org.springframework.samples.petclinic. modello
- org.springframework.samples.petclinic. proprietario
- org.springframework.samples.petclinic. sistema
- org.springframework.samples.petclinic. veterinario
- org.springframework.samples.petclinic. visitare
Ognuno di essi rappresenta un dominio o una caratteristica dell'applicazione, raggruppando classi altamente accoppiate all'interno e consentendo un'elevata coesione .
5. conclusione
In questo piccolo articolo, abbiamo dato uno sguardo ad alcuni consigli che dobbiamo tenere a mente quando costruiamo un progetto Spring Boot e abbiamo imparato come progettare la struttura del pacchetto.