我正在完成一个 spring mvc 视频系列并且喜欢它!
我想了解更多关于正在使用的确切架构的细节,但无法确定正确的 姓名 - 以便我可以进一步阅读。
例如,我知道表示层是 MVC,但不太确定您会更具体地如何描述 考虑使用服务和资源对象的模式——而不是选择使用服务、DAO 和域对象。
有什么线索可以帮助我更好地将搜索重点放在理解下面的布局上吗?
application
core
models/entities
services
rest
controllers
resources
resource_assemblers
编辑:
Nathan Hughes 的评论澄清了我对命名法的困惑,SirKometa 将我没有掌握的建筑点联系起来。谢谢你们。
最佳答案
据我所知,您提到的布局代表了通过 REST 服务与世界通信的应用程序。
core
包代表所有与 View 无关的类(域、服务、存储库)。 model
包 - 假设您的目标是典型的应用程序,您确实有一个 model/domain/entity
代表您的数据的包 例如:https://github.com/chrishenkel/spring-angularjs-tutorial-10/blob/master/src/main/java/tutorial/core/models/entities/Account.java . repository
package - 由于您使用的是 Spring,因此您很可能也会使用,因为 spring-data
甚至 spring-data-jpa
与 Hibernate
作为您的 ORM 库。它很可能会引导您使用 Repository
界面(您出于某种原因观看的视频的作者决定不使用它)。无论如何它将是您访问数据库的层,例如:https://github.com/chrishenkel/spring-angularjs-tutorial-10/blob/master/src/main/java/tutorial/core/repositories/jpa/JpaAccountRepo.java service
package 将是您操作数据的包。这不是最好的例子,但这一层不直接访问你的数据库,它会使用存储库来做它,但它也可能做其他事情——它将是你的 API 来操作你的应用程序中的数据。假设您想在将钱包保存到数据库之前对其进行花哨的计算,或者像这里 https://github.com/chrishenkel/spring-angularjs-tutorial-10/blob/master/src/main/java/tutorial/core/services/impl/AccountServiceImpl.java您想确保您尝试创建的博客尚不存在。 controllers
包包含DispacherServlet
将使用的所有类处理请求。您将从请求中读取“输入”,对其进行处理(在此处使用您的 Services
)并发送您的回复。 resource_assemblers
在这种情况下,包是特定于框架的( Hateoas
)。据我所知,它只是您的 json 响应的 DTO(例如,您可能希望将密码存储在您的 Account
中,但通过 json 公开它不是一个好主意,如果您不这样做就会发生使用 DTO)。 如果这就是您要找的答案,请告诉我。
关于spring - 识别 Spring MVC 架构模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679992/