簡體   English   中英

在春季將多個存儲庫自動裝配到單個DAO中-不好的做法?

[英]Autowiring multiple repositories into a single DAO in Spring - bad practice?

假設我有以下Spring Mongo存儲庫。 ObjectOne,ObjectTwo和ObjectThree表示存儲在同一數據庫中單獨集合中的文檔

public interface RepositoryOne extends MongoRepository<ObjectOne, String> {
}

public interface RepositoryTwo extends MongoRepository<ObjectTwo, String> {
}

public interface RepositoryThree extends MongoRepository<ObjectThree, String> {
}

然后是一個DAO類

public class ExampleDAO {
    @Autowired
    private RepositoryOne repositoryOne;

    @Autowired
    private RepositoryTwo repositoryTwo;

    @Autowired
    private RepositoryThree repositoryThree;

    //Various methods performing operations with repositoryOne
    //Various methods performing operations with repositoryTwo
    //Various methods performing operations with repositoryThree
}

將多個存儲庫自動裝配到如上所述的單個DAO中是否被視為不好的做法? 感覺上課可能做得太多,理想情況下,我應該有一個單一的存儲庫來維護單一的職責。 如果不好的做法,是為每個存儲庫分配一個單獨的DAO,還是使用Spring魔術方法創建一個可用於調用更特定存儲庫的單個存儲庫?

對一個班級承擔多個不相關的責任是一個壞習慣。 如果它們相關,請考慮創建一個“服務”類並自動連接存儲庫。 服務類中的方法也可以抽象存儲庫中的方法,例如:

class ExampleService {
    @Autowired
    private RepositoryOne repositoryOne;

    @Autowired
    private RepositoryTwo repositoryTwo;

    void saveEmployee(Employee e) {
        repositoryOne.save(e);
        repositoryTwo.update(e.getEmpId);
    }
}

除非調查實際的業務邏輯,否則沒人能說出您的ExampleDAO是否適合使用多個存儲庫。

但是,您的ExampleDAO類似乎ExampleDAO業務服務的作用( 在此處查找DAO與存儲庫的主題,它們實際上都是實現數據訪問層的不同方式)。 換句話說,您需要確保您的ExampleDAO類處理/擁有單一職責。

另外,另一個重要的一點是,使用字段注入而不是構造函數注入是一種不好的做法。 我建議你去通過這里在這個問題上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM