在REST Web Service中,有3层 - Controller,BO(Service)和DAO是标准方式吗?为什么我们需要一个单独的BO层。为什么不在Controller类中编写我们的逻辑,调用不同的DAO类?所以,基本上我想要所有JAX-RS注释,如 -
@GET
@Path("/{parameter}")
@Produces("application/json")
,在Controller实现中只有root @Path
。我不想不必要地拥有另一层BO。我想通过从其他Controller类调用Controller类本身来重用代码。我知道这些类是注释的,但是JAX-RS运行时可以适当地处理它。我是否仍然可以实例化那些Controller类并从其他控制器调用不同的方法???
答案 0 :(得分:1)
我认为有两个主要原因:
答案 1 :(得分:0)
要将业务逻辑与控制器分开,因为DAO只与数据库交互,因此理想情况下它不包含任何业务逻辑。
您可以考虑多个模块使用的业务逻辑,例如controller
,rest service
,SOAP service
等。
示例:强>
假设您拥有add
功能,并希望它可以在GUI
以及SOAP service
中使用。如果您在控制器中编写业务逻辑(验证,转换,计算等),那么您还必须为SOAP服务重写它。这将导致冗余,您将无法重复使用代码。
有关更新的问题:
在开发的开始阶段,可以将事物包含在一个地方,但随着时间的推移,代码变得如此之大,以至于管理代码会产生问题。在您的情况下,请考虑在另一个控制器中使用一个控制器。将来它可能会在控制器之间产生循环依赖。
示例: ControllerA需要ControllerB中存在的功能。 ControllerB需要ControllerA中存在的功能。所以在这种情况下两者都相互依赖。因此很难理解代码流。而且在注射时,这将产生问题。