【问题标题】:Grails 3.3.3 generate-all <domain class> Creates only the Service InterfaceGrails 3.3.3 generate-all <domain class> 只创建服务接口
【发布时间】:2018-03-16 17:49:14
【问题描述】:

在 Grails 3.3.3 中,当我为域类运行 generate-all 时,会生成一个服务接口(相对于 Grails 2.x 中的实际服务类)。实际上,直到我尝试向我的服务添加方法时,我才注意到它。

接口被放置在服务所在的服务文件夹中。我实际上确实喜欢这个界面,但我仍然想要服务和默认实现。如果接口已经具有服务的名称,我如何在服务文件夹中同时拥有接口和实现? (例如,接口被命名为ClientService.groovy,因此实现将具有相同的名称)

这是一个生成的接口示例

package project

import grails.gorm.services.Service

@Service(Client)
interface ClientService {

    Client get(Serializable id)

    List<Client> list(Map args)

    Long count()

    void delete(Serializable id)

    Client save(Client client)

}

【问题讨论】:

    标签: grails interface generate


    【解决方案1】:

    我怎样才能同时拥有接口和实现 如果接口已经有服务的名称,services文件夹?

    如果您有一个标有@Service 的接口,那么您根本就不应该有实现源文件。 GORM 数据服务在编译时为您生成实现。如果您想自己编写一些代码,那么不要编写接口,而是编写一个抽象类并使用@Service 对其进行注释。没有理由让你有一个标有@Service 的接口,然后编写一个实现该接口的类。

    【讨论】:

    • 接口、抽象和具体类也可以很漂亮。您的建议是 Groovy 和/或 Grails 方法吗?
    • “您的建议是 Groovy 和/或 Grails 方法吗?” - 我没有提出建议。我描述了 GORM 是如何处理 @grails.gorm.services.Service 注释的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    相关资源
    最近更新 更多