编程

推荐的 Spring Boot 项目的包结构

456 2024-07-05 16:39:00

1.概述

在构建一个新的 Spring Boot 项目时,我们可以高度灵活地组织我们的类。

不过,还是有一些建议需要我们牢记。

2.无默认包

鉴于像 @ComponentScan@EntityScan@ConfigurationPropertiesScan @SpringBootApplication 这样的 Spring Boot 注解使用包来定义扫描位置,建议我们避免使用默认包–也就是说,我们应该始终在类中声明该包

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 项目时需要注意的一些建议–并了解了我们如何设计包的结构