我的主要开发框架是java spring框架。我要写服务层、 Controller 层、dao层、存储库层等等。有数千吨分层。我认为基于组件的开发方法会比分层更有效率。 Spring 将每个 java bean 称为一个组件。但我认为组件和层之间应该有很大的区别。通常,层是无源的,而组件是有源的。组件触发事件、调用生命周期回调方法并主动处理任务。另一方面,层仅提供抽象。那么层和组件之间的根本区别是什么?
最佳答案
层和组件的概念不同,它们不能互相替代。层是一个抽象。您可以从数据库交互或 HTTP 端点处理程序中抽象出业务逻辑。层由组件组成。一个层中可以有多个组件。
让我们继续看具体的例子。您的系统中有 User
和 Group
实体。您将为这两者提供必要的端点处理程序,名为 UserController
和 GroupController
。这些是组件,它们一起形成端点处理程序层。对于业务逻辑,您将拥有 UserService
和 GroupService
。这些是组件,它们形成服务层。带有 UserRepository
和 GroupRepository
组件的数据库层也是如此。
如果您打算使用全栈组件,在这种情况下,所有层都会压缩到处理程序中。这意味着 UserController 实现了从获取请求、应用业务规则到访问数据库的所有内容。这种结构很难测试,也很难维护。过了一段时间,代码就会变得非常困惑并且难以处理。不会有单元测试,只会有集成测试来测试一切。无法更改数据库访问方法,有人可能希望使用内存存储库实现来进行测试,但这种技术不允许这样做。总而言之,分层架构一开始可能看起来很复杂,但从长远来看它会很方便。
P.S.:如果您对组件有其他意思,请发表评论,然后我们可以继续讨论。
关于java - 层和组件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39638085/