Перейти к основному содержимому

Рекомендуемая структура пакета проекта Spring Boot

· 2 мин. чтения

1. Обзор

При создании нового проекта Spring Boot существует высокая степень гибкости в том, как мы можем организовать наши классы.

Тем не менее, есть некоторые рекомендации, которые мы должны иметь в виду.

2. Нет пакета по умолчанию

Учитывая тот факт, что аннотации Spring Boot, такие как @ComponentScan , @EntityScan, @ConfigurationPropertiesScan и @SpringBootApplication , используют пакеты для определения мест сканирования, рекомендуется избегать использования пакета по умолчанию — то есть мы всегда должны объявлять пакет в наших классах .

3. Основной класс

Аннотация @SpringBootApplication запускает сканирование компонентов для текущего пакета и его подпакетов . Таким образом, надежный способ — разместить основной класс проекта в базовом пакете .

Это настраивается, и мы все еще можем найти его в другом месте, указав базовый пакет вручную. Однако в большинстве случаев этот вариант, безусловно, проще.

Более того, проект на основе JPA должен иметь несколько дополнительных аннотаций в основном классе:

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

Также имейте в виду, что может потребоваться дополнительная настройка.

4. Дизайн

Дизайн структуры пакета не зависит от Spring Boot. Поэтому он должен быть продиктован требованиями нашего проекта.

Одной из популярных стратегий является package-by-feature , которая повышает модульность и обеспечивает видимость отдельных пакетов внутри подпакетов.

Возьмем, к примеру, проект PetClinic . Этот проект был создан разработчиками Spring, чтобы проиллюстрировать их взгляд на то, как должен быть структурирован обычный проект Spring Boot.

Он организован по принципу «пакет за функцией». Следовательно, у нас есть основной пакет org.springframework.samples.petclinic и 5 подпакетов:

  • org.springframework.samples.petclinic. модель
  • org.springframework.samples.petclinic. владелец
  • org.springframework.samples.petclinic. система
  • org.springframework.samples.petclinic. ветеринар
  • org.springframework.samples.petclinic. посещать

Каждый из них представляет домен или функцию приложения, группируя внутри сильно связанные классы и обеспечивая высокую связность .

5. Вывод

В этой небольшой статье мы рассмотрели некоторые рекомендации, которые необходимо учитывать при создании проекта Spring Boot, и узнали о том, как мы можем спроектировать структуру пакета.