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