Anbefalet pakkestruktur for et Spring Boot-projekt
1. Oversigt
Når vi bygger et nyt Spring Boot-projekt, er der en høj grad af fleksibilitet i, hvordan vi kan organisere vores klasser.
Der er stadig nogle anbefalinger, som vi skal huske på.
2. Ingen standardpakke
I betragtning af det faktum, at Spring Boot-kommentarer kan lide @ComponentScan, @EntityScan, @ConfigurationPropertiesScan og @SpringBootApplication brug pakker til at definere scanningsplaceringer, det anbefales, at vi undgår at bruge standardpakken - dvs. vi skal altid erklære pakken i vores klasser.
3. Hovedklasse
Det @SpringBootApplication annotation udløser komponentscanning efter den aktuelle pakke og dens underpakker. Derfor er en solid vej at gå projektets hovedklasse ligger i basispakken.
Dette kan konfigureres, og vi kan stadig finde det andetsteds ved at angive basispakken manuelt. I de fleste tilfælde er denne mulighed dog bestemt enklere.
Endnu mere skal et JPA-baseret projekt have et par yderligere kommentarer til hovedklassen:
@SpringBootApplication (scanBasePackages = "eksempel.baeldung.com") @EnableJpaRepositories ("eksempel.baeldung.com") @EntityScan ("eksempel.baeldung.com")
Vær også opmærksom på, at der muligvis er behov for ekstra konfiguration.
4. Design
Udformningen af pakkestrukturen er uafhængig af Spring Boot. Derfor bør det pålægges af kravene i vores projekt.
En populær strategi er pakke-for-funktion, som forbedrer modularitet og muliggør pakke-privat synlighed i underpakker.
Lad os f.eks. Tage PetClinic-projektet. Dette projekt blev bygget af Spring-udviklere for at illustrere deres syn på, hvordan et fælles Spring Boot-projekt skal struktureres.
Det er organiseret på en pakke-for-funktion måde. Derfor har vi hovedpakken, org.springframework.samples.petclinicog 5 underpakker:
- org.springframework.samples.petclinic.model
- org.springframework.samples.petclinic.ejer
- org.springframework.samples.petclinic.system
- org.springframework.samples.petclinic.dyrlæge
- org.springframework.samples.petclinic.besøg
Hver af dem repræsenterer et domæne eller en funktion i applikationen, gruppering af højkoblede klasser indeni og muliggør høj samhørighed.
5. Konklusion
I denne lille artikel kiggede vi på nogle anbefalinger, vi skal huske på, når vi bygger et Spring Boot-projekt - og lærte om, hvordan vi kan designe pakkestrukturen.