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, и узнали о том, как мы можем спроектировать структуру пакета.