服务层在Spring中的作用(澄清)

时间:2017-10-05 11:40:22

标签: java spring spring-mvc

我想在我的脑海中澄清服务层的作用。我的应用程序有一个经典架构: 控制器=>服务=> DAO(JpaRepository)。

该服务执行我的业务逻辑,并使用@Transactional进行注释。

我们举一个简单的例子说我有两个实体:

  • 公司
  • 项目

公司可以有多个项目,项目可以在一个公司。假设每个实体都有一个控制器。 例如,如果我想获得一家公司的所有项目,我有两个选择。

  1. 在我的 CompanyController 中调用 ProjectService ,并在ProjectService中创建一个方法,该方法通过公司ID(通过DAO中的查询)获取所有项目。然后,我的控制器中会有几个@Autowired(用于所有服务),但我的服务中只有一个。
  2. 在我的CompanyService中添加FindAllProject,它将调用项目DAO方法。然后,我的控制器中只有一个@Autowired,但我的服务中只有几个。
  3. 最好的方法是什么?

    提前感谢您的回答。

    的Seb

1 个答案:

答案 0 :(得分:0)

我不确定是否有最佳实践。我想选择第一个选项。原因是:

服务负责业务逻辑。您的要求是从Projects List获得Company,返回结果是{strong> List 中的Projects

然后ProductService层只需要调用一个ProductDAO,它仅负责Product

牢记这一点,当方法增加时,请记住:您希望得到什么作为返回结果?

  • 一个Project,所以你去ProjectService
  • 一个Company,所以你去CompanyService