java - POJO 应该连接到 View 还是 Controller ?

标签 java spring spring-mvc pojo

我正在开发一个 Spring 项目,其整体结构基于 View - Controller -服务层-DAO/POJO 布局。

我正在开发一个新的 POJO 对象,但不确定绑定(bind)它的最佳位置在哪里。对我来说最有意义的两个是将其放入正在使用的 View 中,或者将其附加到 View 的 Controller ,就像附加其他数据一样。

一个 View 有一个表,其中显示多种相似的数据。该表显示了数据名称、新增、修改和删除的更改计数、数据条数(可以向下钻取)以及最后的更改总数。

由于我希望将来自己维护这个软件,所以我尝试使其可扩展且易于维护。由于该项目需要双语页面,我大量使用 Spring 消息传递功能。所以我的新对象接受 5 个参数。前四个参数是字符串、字段名称 spring 消息传递键、钻取页标题 spring 消息传递键、计数的数据库存储过程名称以及钻取页值的数据库存储过程名称。最后一个参数是字符串数组列表,这些字符串是钻取页面上列标题的 spring 消息传递键。

使用该对象,当我想在此表中添加或删除值时,我应该只能触及一个文件,而无需修改多个页面。我还没有弄清楚使用它的正确位置是什么。让 View 调用/创建对象并为每个元素创建一个表列表,还是让 Controller 调用/创建对象并将数据附加到 View 对象更合适?

我构建新 POJO 的方式确实破坏了项目所使用的 v-c-s-d 模型,但我不想创建额外的项目文件来与仅用于在该表中显示的对象进行交互,并深入了解该表中的结果。如果我要与对象进行更多交互,那么提供丰富交互列表的服务层可能会很有用。但在本例中,POJO 很大程度上是独立的,因为它有一个用于其自己的数据库调用的紧密耦合的 DOA。

最佳答案

这个问题有点宽泛,无法用一个陈述来回答,所以我只涵盖所有关键部分。首先我回答标题问题本身:

Should a POJO be connected to a view or controller?

POJO 永远不会连接到 View 或 Controller 。它是一个独立的数据结构,是任何库、框架或组件(例如 View 或 Controller )的数据包。这个想法是这个模型应该在 View 和 Controller 之间共享。有关 POJO 的更多信息,请访问 Spring: Understanding POJO

So my new object accepts 5 parameters.

将对象分解为较小的对象并使用decorator为它们添加功能或状态。

Using the object I should be able to touch only the one file when I want to add or remove values from this table, without having to modify multiple pages. What I have not figured out is what the correct place to use it is. Would having the view call/create the object and for each element create a table listing for it or having the controller call/create the object and append the data to the view object be more appropriate?

文件和对象的 1-1 抽象很好。将对象构造为不可变的,并让数据源来源仅是文件。通过接触数据源源——文件的方法来执行添加、更新和删除操作。然而对象仍然是不可变的,这是可维护性的关键。 List<MyObject>可以很好地代表表格。

If I was going to have more interactions with the object, then a service layer offering a rich listing of interactions might have been useful.

出于这个原因,引入了服务层。

关于java - POJO 应该连接到 View 还是 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54009025/

相关文章:

java - SerialVersionUID 异常

java - 多线程——匹配实例

java - 如何仅从第一个空格出现的 Java 中拆分字符串

spring - 如何使用 OAuth2 和 Mock 测试资源

java - MVC.NET 的 @Html.Action 方法的 Spring Web 等效项是什么?

spring-mvc - 建议 Controller 方法 *before* @Valid 注解被处理

java - 强制转换:为什么子类属性在分配给父类(super class)变量时变得不可访问?

java - 如何获取 Spring Restful Web 服务中请求正文中发送的字符串?

java - 在同一个表的同一事务中绑定(bind) springjdbc 和 hibernate session 工厂

java - FileSizeLimitExceededException 导致错误 500 而不是 413