1. 概述
在構建新的 Spring Boot 項目時,我們組織類的方式具有很高的靈活性。
不過,仍然有一些建議需要我們牢記。
2. 不使用默認包
鑑於 Spring Boot 註解(如 @ComponentScan、@EntityScan、@ConfigurationPropertiesScan)和 @SpringBootApplication)使用包來定義掃描位置,我們建議避免使用默認包——即,我們應該始終在我們的類中聲明包。
3. 主類
<em @SpringBootApplication</em> 註解會觸發當前包及其子包的組件掃描。因此,最佳實踐是將項目的主類放在基礎包中。
這可以配置,我們仍然可以通過手動指定基礎包來定位它。但是,在大多數情況下,這個選項無疑更簡單。
更重要的是,基於JPA的項目還需要在主類上添加一些額外的註解:
@SpringBootApplication(scanBasePackages = "example.baeldung.com")
@EnableJpaRepositories("example.baeldung.com")
@EntityScan("example.baeldung.com")請注意,可能需要進行額外的配置。
4. 設計
軟件包結構的設計獨立於 Spring Boot。因此,它應該由我們項目的需求來驅動。
一種流行的策略是按功能進行包管理,這可以增強模塊化並允許子包內部實現包私有可見性。
例如,可以參考 Spring 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 項目時需要考慮的一些建議,並瞭解瞭如何設計包結構。