我已经实现了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个冗余类,这只会将调用委派给DAO。

服务层应用于获取的数据上的业务逻辑。例如:如果要向获取的国家/地区添加权限。

如果将来要向这些国家/地区添加其他逻辑,则最好进行重构并创建服务。

10-04 17:23