gpt4 book ai didi

Java/ Spring : Beans for the View

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:18:19 25 4
gpt4 key购买 nike

我遇到了一个难题,我不确定开始解决它的最佳方法。

我在工作时使用的是旧代码库。一些领域对象(以及它们背后的数据库表)没有多大意义。例如,deleted 存储为 longage 存储为 String 等。我已经能够很好地工作。在 View 中,我可以说 if (deleted == 1)...。但是有一些特定的业务逻辑将其放在 View 中会导致维护问题。这是一个示例:

String title = null;
if (obj.getTitle != null) {
title = obj.getTitle();
} else {
title = obj.getName() + " - " + obj.getCategory();
}

我真的很想拥有一个“ View bean”,在其中消除并存储此业务逻辑和合法的怪异之处,以便我可以在多个 View 中使用它,然后在一个地方更改它。例如,如果我有一个 Product POJO,然后是我的 ProductViewBean,我会做如下事情:

productViewBean.setDeleted( product.getDeleted() == 1 );
productViewBean.setTitle( product.getTitle() != null ? product.getTitle() : product.getName() + " - " + product.getCategory() );

我的问题是,我应该在哪里做这件事?我是否应该将 manager(注入(inject)适当的 daos)注入(inject)到我的 controller 中并返回我的“view bean”?还是我的做法全错了,还有更好的方法吗?

提前致谢

(注意:我知道底层结构是真正的问题,但此时更改超出了我的权限。太多项目使用这些领域对象。即使我确实清理了 db/domain 对象(所以deleted 是一个 boolean 等)我仍然留下了不可避免的业务逻辑(如果 !title 然后“从其他组件构建标题”)不属于数据层,我想封装在一个地方,这样 Controller 或 View 都不必担心它,它可以跨多个 Controller / View 使用。我碰巧可以写一些高效的东西并且可维护,甚至可以创建一个很好的层来简化将来这些域对象的清理。)

最佳答案

我敢打赌,您可以在 Spring 数据绑定(bind)和验证 API 中解决所有这些问题。

我还要说的是,您应该有一个与 Web Controller 层不同的服务层。将服务注入(inject) Web 层并让它们完成所有工作。他们担心工作单元、事务和 DAO 对象。

关于Java/ Spring : Beans for the View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com