前言:
這兩天寫着寫着突然想到了一個東西,就是之前犯過的一個錯誤,service層的相互調用的問題,循環依賴導致報錯的問題;
問題:
service層 主要做業務邏輯,dao層sql語句,
那么現在我有個業務場景我刪除的時候要刪除我同事的表,我同事刪除我的表
我同事刪除的時候改我的表,
那么問題來了我service注入了我同事的service ,我同事的service注入了我的service,
導致了一個循環注入的情況請問如何解決,我試過 單獨@autowired注入不會有問題,構造函數注入會有問題,
還有一點就是service 調用service是否違反了三層架構的設計。是否service只允許調用dao,但是如果service 只調用dao,難道要我把我同事的業務代碼拷貝過來嗎?
這說明你的表和你同事的表有緊密的關系,根據高內聚原則,應該對這兩個表的業務操作單獨抽取出來作為一個service,
包括你的service一部分代碼,和你同事的service一部分代碼,新的service作為一個相對低層的service,
你們的service調用新service,改雙向依賴為單向依賴,提高內聚降低耦合。