Struktur Paket yang Direkomendasikan dari Proyek Spring Boot

1. Ikhtisar

Saat membangun proyek Spring Boot baru, ada tingkat fleksibilitas yang tinggi tentang bagaimana kita dapat mengatur kelas kita.

Meski begitu, ada beberapa rekomendasi yang perlu kami perhatikan.

2. Tidak Ada Paket Default

Mengingat fakta bahwa anotasi Spring Boot seperti @ComponentScan , @EntityScan , @ConfigurationPropertiesScan, dan @SpringBootApplication menggunakan paket untuk menentukan lokasi pemindaian, sebaiknya hindari penggunaan paket default - yaitu, kita harus selalu mendeklarasikan paket di kelas kita .

3. Kelas Utama

The @SpringBootApplication penjelasan memicu pemindaian komponen untuk paket saat ini dan sub-paket nya. Oleh karena itu, cara yang solid untuk pergi adalah memiliki kelas utama proyek yang berada dalam paket dasar .

Ini dapat dikonfigurasi, dan kami masih dapat menemukannya di tempat lain dengan menentukan paket dasar secara manual. Namun, dalam banyak kasus, opsi ini tentu lebih sederhana.

Terlebih lagi, proyek berbasis JPA perlu memiliki beberapa penjelasan tambahan di kelas utama:

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

Juga, ketahuilah bahwa konfigurasi tambahan mungkin diperlukan.

4. Desain

Desain struktur paket tidak bergantung pada Spring Boot. Oleh karena itu, harus dipaksakan oleh persyaratan proyek kami.

Salah satu strategi populer adalah paket-demi-fitur , yang meningkatkan modularitas dan memungkinkan visibilitas paket-pribadi di dalam sub-paket.

Mari kita ambil, misalnya, proyek PetClinic. Proyek ini dibuat oleh pengembang Spring untuk mengilustrasikan pandangan mereka tentang bagaimana proyek Spring Boot harus disusun.

Ini diatur dengan cara paket-demi-fitur. Karenanya, kami memiliki paket utama, org.springframework.samples.petclinic , dan 5 sub-paket:

  • org.springframework.samples.petclinic. model
  • org.springframework.samples.petclinic. pemilik
  • org.springframework.samples.petclinic. sistem
  • org.springframework.samples.petclinic. dokter hewan
  • org.springframework.samples.petclinic. mengunjungi

Masing-masing mewakili domain atau fitur aplikasi, mengelompokkan kelas yang sangat terhubung di dalam dan memungkinkan kohesi tinggi .

5. Kesimpulan

Di artikel kecil ini, kami telah melihat beberapa rekomendasi yang perlu kami ingat saat membangun proyek Spring Boot - dan belajar tentang bagaimana kami dapat mendesain struktur paket.