Java EJB中的Facades与基于spring的web应用程序中的服务是否相同
我参与了几个基于Spring的web应用程序项目,并且自己也写了很多。通常(粗略地说)我们有以下文件夹按类别划分我们的类,如Java EJB中的Facades与基于spring的web应用程序中的服务是否相同,java,spring,jakarta-ee,architecture,ejb,Java,Spring,Jakarta Ee,Architecture,Ejb,我参与了几个基于Spring的web应用程序项目,并且自己也写了很多。通常(粗略地说)我们有以下文件夹按类别划分我们的类,如dao、models、web(如果我们使用Spring MVC或支持JSF的Bean,那么控制器)以及服务——这里我们保留了我们认为是业务逻辑的内容(即使有时这里的类只是将方法转发给dao) 现在我面临EJB应用程序的开发——我知道我将有一些web和model类。我也可以使用专用dao层,或者可以将数据访问放到facades(我更喜欢专用文件夹,尽管它增加了详细性) 但我不
dao
、models
、web
(如果我们使用Spring MVC或支持JSF的Bean,那么控制器)以及服务——这里我们保留了我们认为是业务逻辑的内容(即使有时这里的类只是将方法转发给dao)
现在我面临EJB应用程序的开发——我知道我将有一些web
和model
类。我也可以使用专用dao
层,或者可以将数据访问放到facades
(我更喜欢专用文件夹,尽管它增加了详细性)
但我不清楚facades是否正是将业务逻辑放入it的地方,或者我应该为it添加服务文件夹,并使用facades
更像dao
(消除dao
本身)
我也很高兴能对EJB应用程序体系结构的提示进行简短而全面的编译。我将使用与Spring类似的EJB设置,然后是包含大多数业务逻辑的服务层,然后是包含基本CRUD操作和一些数据库查询的DAO层
在这个场景中,您可以使用不需要数据库的快速单元测试来测试会话bean中可能复杂的业务逻辑,并且可以在这里模拟DAO访问。然后,您可以对DAO层进行相对简单的测试,因此需要数据库的测试数目(即速度相当慢的测试)会更少
通常我会调用facade
一组会话bean,这些bean提供了通过Web服务操作系统的简单方法。这些bean将使用普通的服务层bean。由于只有一个Web层,没有集成层,我认为没有理由创建额外的facade
层。facade不是一种模式吗您为用户提供了一个更高级别的API,而用户本身又使用了更复杂或“内部”的服务?是的,这是一个问题,尽管在EJB应用程序的体系结构中,facade
仅指模式还是指应用程序的结构元素(通常以相同模式实现)如果有人能给我解释一下,我会很高兴的!我喜欢你的提议和解释。如果没有其他想法,也许我会接受:)谢谢。祝你的项目好运。