Aanbevolen pakketstructuur van een Spring Boot-project

1. Overzicht

Bij het bouwen van een nieuw Spring Boot-project is er een hoge mate van flexibiliteit over hoe we onze lessen kunnen organiseren.

Toch zijn er enkele aanbevelingen waarmee we rekening moeten houden.

2. Geen standaardpakket

Gezien het feit dat Spring Boot-annotaties zoals @BuienRadarNL, @EntityScan, @ConfigurationPropertiesScan en @SpringBootApplication pakketten gebruiken om scanlocaties te definiëren, het wordt aanbevolen om het standaardpakket te vermijden - dat wil zeggen, we moeten het pakket altijd aangeven in onze lessen.

3. Hoofdklasse

De @SpringBootApplication annotatie activeert het scannen van componenten voor het huidige pakket en zijn subpakketten. Daarom is een solide manier om te gaan de hoofdklasse van het project bevindt zich in het basispakket.

Dit is configureerbaar en we kunnen het nog ergens anders lokaliseren door het basispakket handmatig op te geven. In de meeste gevallen is deze optie echter zeker eenvoudiger.

Sterker nog, een JPA-gebaseerd project zou een paar extra annotaties over de hoofdklasse nodig hebben:

@SpringBootApplication (scanBasePackages = "example.baeldung.com") @EnableJpaRepositories ("example.baeldung.com") @EntityScan ("example.baeldung.com")

Houd er ook rekening mee dat er mogelijk extra configuratie nodig is.

4. Ontwerp

Het ontwerp van de pakketstructuur is onafhankelijk van Spring Boot. Daarom moet het worden opgelegd door de vereisten van ons project.

Een populaire strategie is pakket voor functie, wat de modulariteit verbetert en pakket-private zichtbaarheid binnen subpakketten mogelijk maakt.

Laten we bijvoorbeeld het PetClinic-project nemen. Dit project is gebouwd door Spring-ontwikkelaars om hun visie te illustreren over hoe een gemeenschappelijk Spring Boot-project moet worden gestructureerd.

Het is per functie georganiseerd. Daarom hebben we het hoofdpakket, org.springframework.samples.petclinic, en 5 subpakketten:

  • org.springframework.samples.petclinic.model-
  • org.springframework.samples.petclinic.eigenaar
  • org.springframework.samples.petclinic.systeem
  • org.springframework.samples.petclinic.dierenarts
  • org.springframework.samples.petclinic.bezoek

Elk van hen vertegenwoordigt een domein of een kenmerk van de applicatie, het groeperen van sterk gekoppelde klassen binnenin en het mogelijk maken van een hoge cohesie.

5. Conclusie

In dit kleine artikel hebben we enkele aanbevelingen bekeken die we in gedachten moeten houden bij het bouwen van een Spring Boot-project - en hebben we geleerd hoe we de pakketstructuur kunnen ontwerpen.