gpt4 book ai didi

java - 在 Spring 中将多个存储库 Autowiring 到单个 DAO 中——不好的做法?

转载 作者:可可西里 更新时间:2023-11-01 10:00:05 24 4
gpt4 key购买 nike

假设我有以下 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
}

像上面那样将多个存储库 Autowiring 到单个 DAO 中是否被认为是不好的做法?感觉这个类可能做的太多了,理想情况下我应该有一个单一的存储库来维护单一的职责。如果这是不好的做法,是否可以为每个存储库创建一个单独的 DAO,或者是否有 Spring 神奇的方法来创建一个我可以用来调用更具体的存储库的存储库?

最佳答案

为一个类分配多个不相关职责是一种不好的做法。如果它们相关,请考虑创建一个“服务”类并 Autowiring 存储库。并且服务类中的方法也可以抽象存储库中的方法,例如:

class ExampleService {
@Autowired
private RepositoryOne repositoryOne;

@Autowired
private RepositoryTwo repositoryTwo;

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

关于java - 在 Spring 中将多个存储库 Autowiring 到单个 DAO 中——不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48530049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com