«1. Обзор

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

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

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

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

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

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

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

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

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

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

4. Дизайн

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

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

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

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

    org.springframework.samples.petclinic.model org.springframework.samples.petclinic.owner org.springframework.samples.petclinic .system org.springframework.samples.petclinic.vet org.springframework.samples.petclinic.visit

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

5. Заключение

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