声明
这个系列文章是翻译自https://www.baeldung.com/的系列博客,个人感觉是一个非常不错的Spring Boot 教程。原网站属于一个公司,主要开展有偿培训业务,但提供相关文字教程的免费阅读和下载。因为我并没有在网页找到相关版权描述信息,所以并不能确定是否可以自由翻译和转载,如果有版权问题,请联系我,我会撤下这个系列文章。
原文地址:
因为版权的关系,本文禁止转载。
概述
在构建新的 Spring Boot 项目时,我们可以高度灵活地组织我们的类。
尽管如此,仍有一些建议我们需要牢记在心。
无默认包
鉴于Spring Boot 注解(如 @ComponentScan ,@EntityScan,@ConfigurationPropertiesScan 和 @SpringBootApplication )使用包来定义扫描位置,建议避免使用默认包——也就是说,我们应该始终在我们的类中声明包。
主类
@SpringBootApplication 注解触发当前包及其子包的组件扫描。因此,一个可靠的方法是让项目的主类驻留在基包中。
这是可配置的,我们仍然可以通过手动指定基本包将其定位到其他地方。但是,在大多数情况下,这个选项肯定更简单。
更重要的是,基于JPA的项目需要在主类上有一些额外的注释:
scanBasePackages = "example.baeldung.com")
("example.baeldung.com")
("example.baeldung.com") (
此外,请注意可能需要额外的配置。
设计
包结构的设计独立于 Spring Boot。因此,它应该是由我们的项目的需求决定。
一种流行的策略是按功能组织包,它增强了模块化,并使子包内部的包私有可见性。
让我们以 项目为例。这个项目是由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
它们中的每一个都代表应用程序的一个域或一个特性,将高度耦合的类分组在内部并实现高内聚。
文章评论