我已经实现了一个 CodeService,它将从代码表中检索国家/地区列表。
在我的 ShippingService 中,我想检查订单是否运送到某个国家/地区。
在这种情况下,我应该使用 CodeService 还是 CodeDAO 来检索国家/地区列表。
public interface CodeService {
public List<String> getCountryList();
}
@Service
public class CodeServiceImpl implements CodeService {
@Autowired
CodeDAO codeDao
public List<String> getCountryList() {
return codeDao.getCountryList();
}
}
@Service
public class ShippingServiceImpl implements ShippingService {
@Autowired
CodeDAO codeDao;
@Autowired
CodeSevice codeService;
public void addOrder(Order order) {
List<String> countries = codeService.getCountryList();
//List<String> countries = codeDao.getCountryList();
}
}
最佳答案
如果您没有任何额外的逻辑(例如本例),我认为最好直接调用 DAO。
优点:始终调用服务,可以让您将 DAO 层与应用程序代码完全分离。 缺点:您将为每个 dao 创建 2 个冗余类,这只会将调用委托(delegate)给 DAO。
服务层应用于所获取数据的业务逻辑。例如:如果您想为获取的国家/地区添加权限。
如果将来要向国家/地区添加额外的逻辑,最好进行重构并创建服务。
关于Java 耦合 - 我应该跨不同模块依赖服务层还是存储库层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782481/