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.