Spring Boot專案的推薦軟體包結構 - Baeldung

banq發表於2020-04-28

鑑於Spring Boot的註解像@ComponentScan,@EntityScan,@ConfigurationPropertiesScan和@SpringBootApplication基於包結構來定義掃描的位置,在構建新的Spring Boot專案時,我們如何在包中組織類應具有高度的靈活性。

@SpringBootApplication註釋觸發對於當前包和它的子包元件掃描。因此,專案的主類應駐留在基本包中。這是可配置的,我們仍然可以通過手動指定基本軟體包來將其定位在其他位置。但是,在大多數情況下,這是不值得的麻煩,更重要的是,因此基於JPA的專案將需要在主類上新增一些其他註釋:

@SpringBootApplication(scanBasePackages = "example.xx.com")
@EnableJpaRepositories("example.xx.com")
@EntityScan("example.xx.com")

包結構的設計獨立於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

它們中的每一個都代表應用程式的一個領域或功能,將內部的高耦合類分組到一個包內,實現高內聚性。

 

相關文章