假设我有以下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魔术方法来创建可用于调用更具体的存储库的单个存储库?
答案 0 :(得分:3)
对于单个班级,有多个无关职责是一种不好的做法。如果它们相关,请考虑创建“服务”类并自动装配存储库。而且服务类中的方法也可以抽象存储库中的方法,例如:
class ExampleService {
@Autowired
private RepositoryOne repositoryOne;
@Autowired
private RepositoryTwo repositoryTwo;
void saveEmployee(Employee e) {
repositoryOne.save(e);
repositoryTwo.update(e.getEmpId);
}
}
答案 1 :(得分:1)