Anbefalt pakkestruktur for et Spring Boot Project

1. Oversikt

Når du bygger et nytt Spring Boot-prosjekt, er det en høy grad av fleksibilitet i hvordan vi kan organisere timene våre.

Likevel er det noen anbefalinger som vi må huske på.

2. Ingen standardpakke

Gitt det faktum at Spring Boot-merknader som @ComponentScan, @EntityScan, @ConfigurationPropertiesScan og @SpringBootApplication bruke pakker for å definere skanneplasser, anbefales det at vi unngår å bruke standardpakken - det vil si vi bør alltid erklære pakken i våre klasser.

3. Hovedklasse

De @SpringBootApplication merknad utløser komponentskanning for den nåværende pakken og dens underpakker. Derfor er en solid vei å gå å ha hovedklassen til prosjektet ligger i basispakken.

Dette er konfigurerbart, og vi kan fortsatt finne det andre steder ved å spesifisere basepakken manuelt. I de fleste tilfeller er imidlertid dette alternativet absolutt enklere.

Enda mer, et JPA-basert prosjekt vil trenge å ha noen ekstra merknader om hovedklassen:

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

Vær også oppmerksom på at ekstra konfigurasjon kan være nødvendig.

4. Design

Utformingen av pakkestrukturen er uavhengig av Spring Boot. Derfor bør det pålegges kravene i prosjektet vårt.

En populær strategi er pakke for funksjon, som forbedrer modulariteten og muliggjør synlighet av pakken privat i underpakker.

La oss ta for eksempel PetClinic-prosjektet. Dette prosjektet ble bygget av Spring-utviklere for å illustrere deres syn på hvordan et felles Spring Boot-prosjekt skal være strukturert.

Det er organisert på en pakke-for-funksjon-måte. Derfor har vi hovedpakken, org.springframework.samples.petclinic, og 5 delpakker:

  • org.springframework.samples.petclinic.modell
  • org.springframework.samples.petclinic.Eieren
  • org.springframework.samples.petclinic.system
  • org.springframework.samples.petclinic.veterinær
  • org.springframework.samples.petclinic.besøk

Hver av dem representerer et domene eller en funksjon i applikasjonen, gruppering av høyt koblede klasser inne og muliggjør høy kohesjon.

5. Konklusjon

I denne lille artikkelen så vi på noen anbefalinger vi må huske på når vi bygger et Spring Boot-prosjekt - og lærte om hvordan vi kan designe pakkestrukturen.


$config[zx-auto] not found$config[zx-overlay] not found