4 回答

TA貢獻1813條經驗 獲得超2個贊
我覺得這確實是系統設計問題,一般系統分層原則是,越是底層越細化,例如數據庫的DAO基本是針對單個表的,越往上層越抽象化,比如某個Service可能會注入多個DAO來實現某個業務。
你提的問題應該就是Service沒有按照職責劃分清楚,比如StudentService應只能實現Student相關的業務,其它的業務應該不歸它管理,因此在StudentService里面不應該調用ClassService或者SchoolService。
就如你所言的解決方案,Service層本身根據不同的業務職責是可以分成多個層,只要確保在同一層里面的Service不會互相引用(也不應該引用),復雜的業務需求應當由更上層的Service提供。
三層設計只是一個指導方針,你可以擴展成n層,這依賴你業務需求的復雜度。

TA貢獻1869條經驗 獲得超4個贊
首先,對于Spring中的循環引用是不會有問題的,而且循環引用在很多時候也是不可避免,很多設計模式實際上都存在著循環引用的情況。
其次,對于像StudentService只調用StudentDao的情況只是理想情況下出現的,實際場景下,一個Service肯定會調用其他Service來完成自身功能。若不希望存在循環引用的情況,那只能讓Service依賴Dao(因為Dao之間是不會存在互相依賴的情況),但這樣做會造成大量的代碼冗余,粒度也過細。
最后,在業務實現中,循環引用是正常的,對于Spring的管理、事物的處理來說都不會產生問題。
添加回答
舉報