【问题标题】:grails generate-controller creating strange interface servicegrails generate-controller 创建奇怪的接口服务
【发布时间】:2019-10-06 03:12:33
【问题描述】:

我正在将 2.5.6 应用程序迁移到 3.3.10。生成控制器时,检测到从控制器自动生成的代码中创建并使用了服务。看服务,只是一个界面。

查看 grails generate-controller 文档,我找不到有关“接口服务”的信息

http://docs.grails.org/3.3.10/ref/Command%20Line/create-controller.html

该服务在内部做什么也是一个谜,当我需要自定义服务中的任何这些方法时,我不清楚应该在什么/哪里触摸代码。我猜这是 Grails 3.3.x 中的新事物,但不确定在哪里可以找到更多信息。

所以具体的问题是:

  1. 该接口服务的用途是什么?
  2. 记录在哪里?
  3. 如何定制?就像被自定义服务实现一样?

示例服务:

import grails.gorm.services.Service

@Service(SyncLog)
interface SyncLogService {

    SyncLog get(Serializable id)

    List<SyncLog> list(Map args)

    Long count()

    void delete(Serializable id)

    SyncLog save(SyncLog syncLog)

}

【问题讨论】:

    标签: grails grails-3.3


    【解决方案1】:

    那个接口服务的目的是什么?

    这是您的数据访问层的起点。

    记录在哪里?

    http://gorm.grails.org/latest/hibernate/manual/index.html#dataServices

    如何定制?

    这是一个界面,您可以编辑和添加/删除您喜欢的任何查询方法。上面链接的文档描述了很多细节。

    【讨论】:

    • 好,我可以看到扩展机制是通过抽象类,这个新模式的想法是针对 GORM 数据访问,而不是针对一般的应用程序逻辑。这个模式是在哪个版本中添加到 Grails 中的?谢谢杰夫。
    • " 这个模式是在哪个版本中添加到 Grails 中的?" - 该文件由scaffolding 插件生成。脚手架插件的 3.4.0 版本是第一个生成 GORM 数据服务接口的版本。 Grails 3.3.1 是第一个包含该功能的 Grails 版本。 Grails 3.3.0 使用了脚手架 3.3.3,没有生成接口。
    • 这也是作为 API 脚手架添加的,因为 Grails 不会从业务逻辑中抽象出通信逻辑,从而创建架构横切关注点。这与 AOP 背道而驰,因为它不仅绑定了通信/业务逻辑,而且无法在不重复的情况下共享/同步状态。
    • “通信逻辑”是什么意思,http hadling?这不是用 Spring Boot 完成的吗?
    • Grails 绑定 API 逻辑的方式是使用注解。这将通信逻辑和数据绑定到控制器/业务逻辑。因此,不可能在不重复的情况下共享/同步该数据。大多数现代 API 框架已经抽象了这一点。例如,我就此向 AWS 团队提出建议,他们对其进行了更改,以便 Lambda 不再绑定此数据,而是将其存储在缓存中,以便与 AWS Gateway 服务共享。这是执行此操作的正确方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多